Como instalo uma chave privada SSH gerada pelo PuTTYgen?

50

Configurei meu servidor Linux para aceitar conexões do meu PC doméstico adicionando a chave pública gerada pelo PuTTYgen ao authorized_keysarquivo.

Agora estou tentando me conectar à mesma máquina, mas desta vez a partir de outra máquina Ubuntu. Eu tenho que usar a mesma chave privada (por um motivo estranho, não pergunte ..) e eu não entendo muito bem como instalá-lo no meu cliente Ubuntu.

Preciso convertê-lo para outro formato?

Assaf Lavie
fonte

Respostas:

25

Não tenho certeza se sua chave privada funcionará no ubuntu, mas vale a pena tentar. basta copiar as chaves para /home/yourName/.ssh/nomear a chave privada como id_rsae a chave pública como id_rsa.pub.

Se isso não estiver funcionando, você poderá criar seu próprio par de chaves ssh usando ssh-keygene copie a nova chave pública no servidor e ssh da seguinte maneira

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

Não brinquei com isso, mas ouvi dizer que o ssh-agent também pode ser usado para gerenciar as chaves ssh.

theTuxRacer
fonte
3
Isso funciona no ubuntu. No entanto, certifique-se de não sobrescrever uma chave id_rsa existente se você já tiver uma (copiando a nova chave por cima), a menos que saiba que não usa a antiga.
David Oneill
5
Esta resposta carece completamente de informações, como você obter o id_rsaarquivo (convertendo a chave na PuTTYgen)
Martin Prikryl
38

Por coincidência, eu apenas tive que fazer isso. Você precisa converter as chaves para o formato OpenSSH. O comando para fazer isso é:

ssh-keygen -i -f puttygen_key > openssh_key

então você pode copiar o conteúdo de openssh_keyin .ssh/authorized_keysda mesma maneira que com uma chave SSH normal.

A -iopção é a que diz ssh-keygenpara fazer a conversão. A -fopção informa onde encontrar a chave para converter.

Isso funciona para chaves não criptografadas . A chave pública não está criptografada, mas a chave privada provavelmente está criptografada. Não tenho certeza se existe uma maneira de descriptografar a chave privada, convertê-la e recodificá-la. Pode ser mais fácil usar novas chaves, como sugere a outra resposta (e eu recomendo o uso, ssh-agentembora isso seja ortogonal ao problema atual).

Espaço em loop
fonte
1
Esta resposta resolve meu problema. Eu tive que converter a chave. Obrigado
leticia
1
Isso resolve apenas parte do problema convertendo a chave pública. Eu usei a resposta do @ user18617 para converter a chave privada também.
ᴠɪɴᴄᴇɴᴛ
3
tentei isso, não funcionou (erro uudecode failed), necessidade de seguir Como converter pares de chaves SSH gerados usando PuTTYgen (Windows) em pares de chaves usadas por ssh-agente e KeyChain (Linux)
Édouard Lopez
@ ÉdouardLopez puttygen_keydeve ser sua chave pública, não privada (* .ppk).
endolith
28

Andrew Stacey explicou como converter as chaves para o formato OpenSSH no Linux.

Se você deseja fazer o mesmo no Windows, siga estas etapas:

  1. Inicie o PuTTYGen.
  2. Clique em "Carregar".
  3. Selecione sua chave privada e digite a senha.
  4. No menu 'Conversões', selecione "Exportar chave OpenSSH".
  5. Escolha o nome do arquivo de destino.
hheimbuerger
fonte
1
Eu só queria dizer que isso funcionou para mim no meu Mac OS X, mesmo sabendo que essa é uma seção do Ubuntu. Eu converti minha chave privada gerada no Windows, conforme descrito acima, e a copiei no meu mac para ~ / .ssh / id_rsa. chmod id_rsa 600 para impedir que o Mac se queixe.
Richard
24

Como reutilizar seus pares de chaves Putty no Ubuntu como chaves OpenSSH:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Como o objetivo da etapa 4 é adicionar sua chave pública a * ~. / Ssh / allowed_keys *, para que você possa usar sua chave secreta Putty como esta em vez de executar 4 como uma etapa intermediária:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys
user18617
fonte
1
sobre a etapa 4: se o nome da chave privada fosse mykey-sec.ppk, nesse caso, o nome do arquivo de origem seria geralmente mykey-sec.pub.
Kinjal Dixit
2
Nomear uma chave pública (presumivelmente no formato RFC 4716) mykey-pub.ppké bastante confuso, pois o .ppkarquivo tem um formato completamente diferente e é usado para pares de chaves (não apenas chave pública).
Martin Prikryl
Essa última linha do puttygen funcionou perfeitamente para mim depois de instalar o putty-tools no debian 9. As outras linhas e respostas aqui não funcionaram.
Tim
Estranhamente eu estava começando puttygen: unknown output type `private‐openssh'e puttygen: cannot handle more than one input filepor isso eu copiei as exatas personagens do código-fonte e renomeado minha chave pública para algo completamente diferente
CPHPython
como um alerta, se você tentar executar os comandos nesta resposta e receber "puttygen: não pode manipular mais de um arquivo de entrada", é provável que o caractere de traço em "private-openssh" não seja colado como um traço ASCII real então puttygen não o reconhece. Em vez disso, digite a palavra você mesmo e ela deve funcionar.
Matt Styles
9

PuTTY / PuTTYgen usa seu próprio formato proprietário de par de chaves. Não funcionará no Linux, onde prevalece o formato OpenSSH de chaves.

  • No PuTTYgen, você pode ver diretamente (e copiar + colar) uma chave pública no formato usado pelo authorized_keysarquivo OpenSSH .

  • Você pode usar o botão Salvar chave pública para salvar a chave pública no .pubformato (RFC 4716). No Linux, o arquivo normalmente é nomeado id_rsa.pub(ou id_dsa.pub). Mas isso geralmente não é necessário.

  • Use a chave Conversões> Exportar OpenSSH para exportar a chave privada no formato OpenSSH. No Linux, o arquivo normalmente é nomeado id_rsa(ou id_dsa) e é armazenado na .sshpasta

Veja o oficial Using PuTTYgen, o gerador de chaves PuTTY .

Você também pode usar uma versão Linux do PuTTYgen para fazer a conversão. A versão do Linux é de linha de comando, ao contrário da versão do Windows.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Consulte a puttygenpágina de manual do Linux .

Martin Prikryl
fonte
2

Encontrei mais uma solução clara.

Em puttygencriar uma chave, navegue até o menu Superior - Conversão e clique em exportar chave openssh

O conteúdo do arquivo começará e terminará com

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • para usuário root Copie esse arquivo de chave para /root/.ssh/como id_rsaouid_dsa

  • para outro usuário Copie esse arquivo de chave para /home/user/.ssh/como id_rsaouid_dsa

Nota :

  1. Não há necessidade de editar authorized_keys.
  2. Eu estou usando amazon linux
  3. Permissão para arquivo 0600
P-Kumar
fonte
1

* * Tenha cuidado e verifique se você tem acesso ao console na caixa, porque se você não fizer o procedimento corretamente, não poderá fazer o ssh novamente até corrigi-lo no console.

O processo é muito mais fácil do que você pensa. Carregue o par de chaves pública / privada que você gerou no puttygen novamente. No puttygen, você notará uma janela no meio da tela que diz: "Chave pública para colar no arquivo Open SSH allowed_keys:".

destaque todo o conteúdo da caixa e pressione control-c para copiá-la.

Faça o SSH na sua caixa do linux e cole-o no arquivo "/home/username/.ssh/authorized_keys". Prefiro usar o nano e clique com o botão direito para colá-lo. Verifique se tudo fica em uma linha.

Modifique o arquivo / etc / sshd_config conforme necessário e reinicie o serviço sshd: "service ssh restart"

Se você precisar de um arquivo de amostra sshd_config, informe-me e posso postar o meu.

Eu fiz isso no servidor Ubuntu 8.04, 10.04 e 12.04 LTS e funciona bem.

ErnestA
fonte
0

Não tenho certeza se esse segmento ainda está ativo, mas me deparei com um problema semelhante com a edição de aniversário do Windows 10, que agora suporta o kernel do Ubuntu. Eu uso o Putty antes para conectar à máquina Linux. Para gerar id_rsa no formato linux, use puttykeygen e carregue sua chave privada putty, clique em conversão e escolha a segunda opção.

Conevrsions de Putty KeyGenerator

abra o arquivo-chave recém-gerado e copie todo o seu conteúdo, verifique se o conteúdo começa com: ----- BEGIN RSA PRIVATE KEY ----- e termina com ----- END RSA PRIVATE KEY -----

vi id_rsa dentro do diretório ~ / .ssh e cole o conteúdo copiado, isso é necessário porque o linux, caso contrário, não entenderá o conteúdo do arquivo.

Isso é tudo, tente ssh no servidor remoto, ele deve funcionar.

binish
fonte