Criar uma chave SSH pública a partir da chave privada?

215

Vamos supor que eu tenho uma chave SSH, mas excluí a parte da chave pública. Eu tenho a parte da chave privada. Existe alguma maneira de regenerar a parte da chave pública?

Rory
fonte

Respostas:

253

Use a opção -y para ssh-keygen:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

Do 'man ssh-keygen'

 -y      This option will read a private OpenSSH format file and print an
         OpenSSH public key to stdout.

Especifique a chave privada com a opção -f, a sua pode ser dsa em vez de rsa. O nome da sua chave privada provavelmente contém o que você usou. A chave pública recém-gerada deve ser a mesma que você gerou antes.

Kyle Brandt
fonte
7
Por que o "-t dsa"? Mayge a chave do OP é rsa? Eu me livraria de -t e usaria um -f.
innaM
1
Bom ponto, actualizado em conformidade
Kyle Brandt
Sim, o meu originalmente era RSA.
Rory
1
No Mac OSX 10.9.3 Mavericks, estou recebendo 'carregamento com falha' após executar o comando. Como eu resolvo isso?
precisa
Eu acho que você pode dar um passo adiante com o parâmetro -N no caso de a chave privada ser protegida por senha:ssh-keygen -f ~/.ssh/id_rsa -y -N "$PASSWORD" > ~/.ssh/id_rsa.pub
ken
6

A solução é especificamente para usuários que usam o Windows

Ferramenta usada:

  • Puttygen (gerador de chaves PuTTY)
  • WinSCP

Etapas para executar:

  1. Abra o PuTTY Key Generator.
  2. Carregue sua chave privada ( *.ppkarquivo).
  3. Copie os dados da chave pública da seção "Chave pública para colar no arquivo OpenSSH allowed_keys" do PuTTY Key Generator e cole os dados da chave no arquivo "allowed_keys" (usando o bloco de notas), se desejar usá-lo.

Instantâneo mostrando partes de Puttygen para focar:

Instantâneo mostrando partes de Puttygen para focar

devprashant
fonte
Leitura adicional: askubuntu.com/questions/53553/…
devprashant
O Puttygen também pode 'importar' chaves privadas no formato OpenSSH (realmente legado do OpenSSL) e SSHCOM. E, embora tenha se originado no Windows, também foi portado para o Unix, e a versão do Unix puttygené um programa de linha de comando (não GUI); veja, por exemplo, linux.die.net/man/1/puttygen
dave_thompson_085 6/18