Questão Como faço para recuperar a chave pública de uma chave privada SSH?


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 nos servidores authorized_keys arquivo e não deseja criar um novo par de chaves.

Como alternativa, como faço para criar o id_rsa.pub arquivo de um id_rsa Arquivo?


371
2017-07-18 09:57


origem


pbcopy > ~/.ssh/id_rsa.pub oops. - Nick T
@NickT - pbcopy é um comando do MacOSX. Além disso, é inútil se você tiver reiniciado, desconectado ou copiado qualquer outra coisa na área de transferência. - jsnfwlr


Respostas:


Eu encontrei a resposta na falha do servidor: Criar 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 uma nota lateral, 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 acrescente 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 Agente SSH (um programa que é executado em segundo plano e evita a necessidade de digitar novamente a frase secreta do arquivo de chaves repetidas vezes), é possível usar o ssh-add -L comando para listar as chaves públicas para chaves que foram adicionadas ao agente 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).


577
2017-07-18 10:12



você fez um pedaço de bolo. obrigado - bragboy
Por favor, note que o seu arquivo de chave privada ~/.ssh/id_rsa deve ser restrito ao seu nome de usuário. usar $ sudo chmod 600 ~/.ssh/id_rsa e insira suas credenciais de raiz para restringi-lo, então você pode gerar o arquivo de chave pública. Caso contrário, você receberá um aviso de arquivo de chave privada irrestrito. - Mark Mikofski
@MarkMikofski Não há necessidade de sudo, você deve possuir a chave privada já. Caso contrário, você não poderá lê-lo em primeiro lugar. - Lekensteyn
@Lekensteyn obrigado, claro que você está certo !. Além disso 400 é recomendado, já que não é necessário gravar no arquivo de chave privada. O comando corrigido deve ser $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
O comentário da chave privada é perdido. Vejo stackoverflow.com/questions/38290929/… - weberjn


Esta é uma solução específica para usuários que usam o Windows para SSH em suas máquinas remotas, incluindo imagens de nuvem no Amazon AWS e GCE.

(Aviso Legal)

Recentemente, usei esta solução para efetuar login remotamente em novas imagens de VM implementadas no GCE.


Ferramentas usadas:

  1. puttygen
  2. WinSCP

Etapas para executar:

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

Descrição (como fazer):

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

    Se você tiver uma chave privada:

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

    Se você fizer não tem uma chave privada:

    • Puttygen aberto,
    • 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).

    Sample Key Generation pic

  2. Crie um novo arquivo 'authorized_keys' (com o Notepad):

    Copie seus dados de chave pública da seção "Chave pública para colar no arquivo authorized_keys do OpenSSH" do PuTTY Key Generator e cole os dados da chave no arquivo "authorized_keys".

    Certifique-se de que haja apenas uma linha de texto nesse arquivo.

  3. Carregue a chave em um servidor Linux:

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

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

  4. Definir permissões adequadas:

    Faça um .ssh diretório (se não existir)

    Copie o authorized_keysarquivo para o diretório .ssh (isso substituirá qualquer authorized_keys Arquivo; tome nota disso).

    Se o arquivo existir, basta adicionar o conteúdo desse arquivo ao arquivo existente.

    Execute comandos para definir permissões:

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

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

Leitura adicional:

  1. Gerando e fazendo o upload de chaves SSH no Windows

  2. Autenticação sem senha usando OpenSSH Key, certificados .pem e .pub


12
2017-11-20 06:18



Se o seu diretório inicial estiver criptografado, faça o seguinte: askubuntu.com/questions/439184/… - devprashant
embora sua resposta não seja realmente relevante para a pergunta, eu voto nela por causa do seu entusiasmo. - Truong Nguyen