Como recupero a chave pública de uma chave privada SSH?

346

Uma chave privada SSH, gerada por ssh-keygen , contém uma parte de chave pública. Como faço para recuperar essa chave pública da chave privada? Perdi minha chave pública e preciso colocar o conteúdo dessa chave pública no arquivo authorized_keys dos servidores e não quero criar um novo par de chaves.

Como você pode criar o arquivo id_rsa.pub de um arquivo id_rsa ?

    
O
por Lekensteyn 18.07.2011 / 11:57

2 respostas

524

Encontrei a resposta no Serverfault: Crie uma chave SSH pública a partir da chave privada?

A opção -y produz a chave pública:

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

Como observação, o comentário da chave pública é perdido. Eu tive um site que exigia o comentário (Launchpad?), Então você precisa editar ~/.ssh/id_rsa.pub e acrescentar um comentário à primeira linha com um espaço entre o comentário e os dados principais. Um exemplo de chave pública é mostrado truncado abaixo.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

Para chaves que foram adicionadas ao SSH Agent (um programa que é executado em segundo plano e evita a necessidade de digitar novamente a senha de keyfile repetidamente), você pode usar o comando ssh-add -L para listar as chaves públicas para chaves que foram adicionadas ao agente (via ssh-add -l ). Isso é útil quando a chave SSH é armazenada em um cartão inteligente (e o acesso ao arquivo de chave privada não é possível).

    
por Lekensteyn 18.07.2011 / 12:12
12

A solução é especificamente para usuários que usam o Windows para SSH em suas máquinas remotas, incluindo imagens de nuvem na AWS e GCE.

(Se isso funcionar para você, um voto positivo é muito apreciado. Obrigado pela sua paciência.)

(Renúncia)

Utilizou recentemente esta solução para o login remoto de novas imagens de vm implantadas no GCE.

Ferramentas usadas:

  1. puttygen
  2. winscp

Etapas para executar:

  1. Gere um par de chaves pública / privada usando o puttygen.
  2. Faça o upload de uma chave pública para seu servidor na nuvem ou em um local remoto.

Descrição (como fazer):

  1. Gere uma chave / par ou use a chave privada existente:

    Se você tiver uma chave privada:

    abra o puttygen, pressione o botão carregar e selecione seu arquivo de chave privada (* .pem).

    Se você não tiver uma chave privada:

    • Open puttygen,
    • Selecione o tipo de chave desejada SSH2 DSA (você pode usar RSA ou DSA) na seção Parâmetros ... e é importante deixar o campo de frase secreta em branco,
    • Pressione gerar e siga as instruções para gerar o par de chaves (público / privado).

  2. Crie um novo arquivo 'authorized_keys' (com o bloco de notas):

    Copiar seus dados de chaves públicas a partir da "chave pública para colar em OpenSSH authorized_keys arquivo" seção do gerador de chave PuTTY, e colar os dados da chave para o arquivo "authorized_keys".

    Verifique se há apenas uma linha de texto nesse arquivo.

  3. Carregue a chave para o servidor linux:

    • Abra o WinSCP,
    • Selecione o protocolo de arquivos SFTP e faça login com suas credenciais ssh.
    • Em caso de sucesso, você vê a estrutura do diretório inicial em sua máquina remota.

    Envie o arquivo authorized_keys para o diretório inicial na máquina remota.

  4. Defina as permissões adequadas:

    Crie o diretório .ssh (se não existisse)

    Copie o arquivo authorized_keys para o diretório .ssh. (isso substituirá qualquer arquivo authorized_keys existente, tome nota disso).

    Se o arquivo existir, simplesmente adicione o conteúdo deste arquivo ao arquivo existente.

    Execute comandos para definir permissões:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Agora você poderá fazer ssh na máquina remota sem inserir credenciais toda vez.

Leitura adicional:

  1. link

  2. link

por devprashant 20.11.2015 / 07:18