Como converter uma chave .ppk em OpenSSH no Linux?


188

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

Respostas:


275

Faça isso com Putty.

  • Linux: com seu gerenciador de pacotes, instale o PuTTY (ou as ferramentas PuTTY mais mínimas):

    • Ubuntu sudo apt-get install putty-tools
    • Semelhante ao Debian apt-get install putty-tools
    • Baseado em RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • etc.
  • OS X: instale o Homebrew e executebrew install putty

Coloque suas chaves em algum diretório, por exemplo, na sua pasta pessoal. Agora converta as chaves PPK em pares de chaves SSH: pesquisa em cache

Para gerar a chave privada :

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

e para gerar a chave pública :

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

Mova essas chaves para ~/.sshe 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 uma operação ' git clone ', pode ser necessário fazer isso também

chmod 666 ~/.ssh/known_hosts

oi eu já tenho um pub, então é preciso criar chave pública novamente
Amit Bera

1
Se você veio aqui procurando como fazer isso no Windows, execute "puttygen yourkey.ppk" e, no menu Conversões, escolha "Exportar chave OpenSSH" para obter a chave privada.
Ryan Shillington

1
a solução de @jous é muito mais agradável desde que você não precisa a chave privada para converter uma chave pública + você não precisa instalar massa
Tobi

Eu tive que adicionar essa chave ao meu ./ssh/configarquivo Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
vladkras

Alguns formatos de curva elíptica (ECDS etc.) ainda estão disponíveis apenas nas ferramentas beta putty.
Daniel W.

39
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 do arquivo de entrada

Fonte: post de blog em burnz.wordpress.com


17
Os arquivos .ppk são os pares de chaves completos, não acho que o comando acima ou a postagem do blog se apliquem a isso.
22713 Peter Becker

2
Acho que quis dizer que funcionará se você usar o botão "Salvar chave pública" do puttygen. O ssh-keygen não entende os arquivos .ppk verdadeiros porque não possui os marcadores '---- BEGIN SSH2 PUBLIC KEY ----'. Você pode encontrar a chave pública no arquivo .ppk entre as linhas "Public-Lines: .." e "Private-Lines: ..".
jous

1
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 parte de base-64 em uma única linha
Jasen

2
Isso não parece para cobrir as chaves privadas, que é por isso que eu gostaria de fazer a conversão, eu já tenho uma chave pública salvo em algum lugar ...
Gert van den Berg

Sim, os arquivos ppk que eu vi tiveram os marcadores apropriados, e isso funcionou muito bem .
tylerl 8/09

5

Obtenha a chave privada:

abra o arquivo .ppk no puttygen:

puttygen ~/.ssh/id_dsa.ppk

exportar como openssh:

Conversões → Exportar chave do OpenSSH

Obtenha a chave pública:

aberta como antes da chave privada com puttygen, a chave pública está sob a chave pública para colar no arquivo OpenSSH allowed_keys


4

Preparei um contêiner Docker para simplificar a vida:

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 pública e privada deve ser colocada

1
ótimo. thx para a imagem! no entanto, enquanto isso, --volume=/path/to/file.ppk:/tmp/id.ppke nãoid_dsa.ppk
pHiL 4/16
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.