Questão Como converter a chave .ppk para a chave OpenSSH no Linux?


Eu sei que é possível converter .ppk em puttygen no Windows, mas como fazer isso no Linux? Isso é possível ?


157


origem




Respostas:


Faça isso com Putty.

  • Linux: com o seu gerenciador de pacotes, instale o PuTTY (ou as ferramentas mais pequenas do PuTTY):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-like apt-get install putty-tools
    • RPM baseado yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • etc.
  • OS X: Instalar Homebrew, então corra brew install putty

Coloque suas chaves em algum diretório, por exemplo sua pasta pessoal. Agora converta as chaves PPK em keypairs SSH: cache search

Para gerar o privado chave:

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

e gerar o público chave:

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Mova estas chaves para ~/.ssh e verifique se as permissões estão definidas como privadas para sua chave privada:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Se você já tentou executar um 'clone git'operação você pode precisar fazer isso também

chmod 666 ~/.ssh/known_hosts

231



oi eu já tenho um .pub, então é preciso criar chave pública novamente - Amit Bera
Se você veio aqui procurando como fazê-lo no Windows, execute "puttygen yourkey.ppk" e, no menu Conversões, escolha "Exportar chave OpenSSH" para obter a chave privada. - Ryan Shillington
a solução do @jous é muito mais agradável, já que você não precisa da chave privada para converter uma chave pública + você não precisa instalar o putty - Tobi
Eu tive que adicionar essa chave ao meu ./ssh/config Arquivo Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes - vladkras
Alguns formatos de curva elíptica (ECDS, etc.) só estão disponíveis nas ferramentas beta putty. - DanFromGermany


ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i flag é importado de outro formato que não o openssh
  • -f flag significa ler a partir do arquivo de entrada

Fonte: um blogpost em burnz.wordpress.com


34



Os arquivos .ppk são os pares de chaves completos, eu não acho que o comando acima ou o post do blog se aplicam a isso. - Peter Becker
Acho que eu quis dizer que funciona se você usar o botão "Salvar chave pública" da puttygen. O ssh-keygen não entende arquivos .ppk verdadeiros porque eles não têm esses marcadores '---- BEGIN SSH2 PUBLIC KEY ----'. Você pode encontrar a chave pública no arquivo .ppk entre as linhas "Public-Lines: .." e "Private-Lines: ..". - jous
Isso funcionou para mim com um arquivo de chave pública - o puttygen parece exigir uma chave privada. parece que tudo o que fez foi reorganizar a base-64 em uma única linha - Jasen
Isso não parece cobrir chaves privadas, e é por isso que eu gostaria de fazer a conversão, eu já tenho uma chave pública salva em algum lugar ... - Gert van den Berg


Obtenha a chave privada:

abra o arquivo .ppk no puttygen:

puttygen ~/.ssh/id_dsa.ppk

exportar como openssh:

Conversões → Exportar chave OpenSSH

Obtenha a chave pública:

aberto como antes do chave privada com puttygen, a chave pública está sob chave pública para colar no arquivo authorized_keys do OpenSSH


5





Eu preparei um contêiner Docker para tornar a vida mais simples:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \
           czerasz/putty-tools

Onde:

  • /path/to/file.ppk - caminho local para o seu arquivo ppk
  • /path/to/output - caminho local para onde a chave privada e pública deve ser colocada

3



ótimo. thx pela imagem! no entanto, entretanto, a sua --volume=/path/to/file.ppk:/tmp/id.ppk e não id_dsa.ppk - pHiL