Usando uma chave privada PuTTY do Windows para o Linux

Usando uma chave privada PuTTY do Windows para o Linux

Gerei duas chaves no PuTTY: pública e privada. Usando este software no Windows, posso me conectar ao servidor normalmente.

Então tentei copiar esses arquivos na minha máquina ubuntu (21.04), e loguei carregando a chave privada (abra o putty, escreva user@hostnamee depois carregue a chave privada em SSH> Auth), mas não é possível conectar sendo rejeitado pelo servidor como este erro diz:

Unable to load key file '~/private_key.ppk' (PuTTY key format too new). 

E uma janela emergente aparece dizendo:

No supported authentication methods available (server sent: publickey)

Portanto, como sugere o primeiro erro, após converter a chave privada para o formato openssh PEM por meio do PuTTYgen e carregar esse arquivo para SSH/Auth, a mensagem 'Não suportado' permanece antes:

Unable to use key file '~/private_key_openssh' (OpenSSH SSH-2 private key (old PEM format) ).

Existe alguma maneira de usar essas chaves no Ubuntu? Talvez através do openssh?

Algumas informações que serão úteis:

  • Nova versão instalada do Ubuntu
  • Massa 0,74

A saída ao tentar comssh -i ~/.ssh/private_key.ppk user@hostname

Chave de carregamento "~/.ssh/private_key.ppk": formato inválido user@hostname: Permissão negada (publickey).

Responder1

As respostas/comentários de Adonis e Thomas estão basicamente corretas, mas faltam alguns detalhes que eu precisava para fazer isso funcionar na prática. Como não tenho reputação suficiente para comentar, adicionarei detalhes por meio desta resposta.

Exporte o Putty PPK para o formato OpenSSH.

Para fazer isso, abra o PuttyGen, carregue a chave privada, vá ao menu "Conversões" e escolha "Exportar chave OpenSSH"

Usando a chave OpenSSH no Ubuntu (ou derivados)

Se você estiver usando-o diretamente para SSH, poderá usá-lo como Adonis mencionou. Mas e se você precisar dele indiretamente, por exemplo, para uso com sistemas de controle de origem?

Copie-o para sua pasta ~/.ssh no Linux. Pode ser necessário criar esta pasta se você nunca usou SSH em sua máquina Linux antes. Ao criar o diretório .ssh, você precisa fazer isso chmod 0700 ~/.sshpara que a ferramenta ssh acredite que o diretório é realmente privado para você.

Se você copiou o arquivo-chave do Windows, agora abra um terminal na pasta ~/.ssh e execute chmod 400 [private key file name]. Isto é necessário porque as permissões padrão (quando copiadas do Windows) serão 770; o utilitário SSH dirá que isso é muito permissivo e ignorará a chave. Infelizmente, ele não informa diretamente como resolver os problemas, mas 400 permissões, que significam "legíveis para mim, não disponíveis para mais ninguém", corrigirão o problema.

Agora, em um terminal, execute eval $(ssh-agent). Isso abre seu agente SSH local e permite adicionar chaves que podem ser obtidas por outros programas, como controle de origem.

Finalmente, corra ssh-add ~/.ssh/[private file key name]. Contanto que você se lembre de definir as permissões, isso deverá funcionar e você poderá usar git/hg/etc. com sua chave SSH.

Responder2

Conexão alcançada!

Conforme sugerido por Thomas Ward, carregar o arquivo private_key no PuTTYgen no Windows e copiar a chave pública para o authorized-keysarquivo funcionou como uma primeira etapa.

Além disso, exportar o arquivo private_key no formato openssh, a primeira opção, para o arquivo private_OpenSSH e depois movê-lo para o diretório ~/.ssh para alterar as permissões com:

chmod 400 private_OpenSSH

Permitiu-me finalmente conectar-me com:

ssh -i ~/private_OpenSSH user@hostname

informação relacionada