Não é possível usar a chave OpenPGP exportada do GnuPG com SSH

1

Gerei uma chave PGP com o GnuPG há um ano. Desde que eu não tive realmente que tocá-lo desde então, estou extremamente confusa com os detalhes do GPG (embora eu entenda a criptografia de chave assimétrica em princípio). Eu usei essa chave para autenticar logins SSH, até apagá-la acidentalmente ontem. Então, hoje, eu comecei a gerá-lo novamente.

Eu corro gpg --export-secret-key -a "Ryan Lue" > ~/.ssh/id_rsa e ele me pede uma senha. Eu digitei a senha e sai o arquivo id_rsa . Agora, quando tento SSH em meus servidores, ele lança o seguinte aviso:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

Então, eu obedientemente chmod 600 ~/.ssh/id_rsa . Então, tento novamente e ele solicita uma senha (na verdade, como estou em um Mac, o Keychain solicita uma senha). Eu digitei a mesma senha que usei para exportá-la e, a cada vez, ela falha, cuspindo o seguinte erro na linha de comando:

Saving password to keychain failed

Eu também tentei adicionar a chave usando ssh-agent , e isso realmente me pede a senha na linha de comando:

Enter passphrase for /Users/rlue/.ssh/id_rsa:

De qualquer forma, ele continua rejeitando a senha. Tenho 100% de certeza de que estou inserindo a mesma frase-senha nesses prompts do que exportando: exportei a chave com sucesso cerca de uma dúzia de vezes e não a autentiquei em uso cerca de quatro dúzias de vezes.

O que estou perdendo?

    
por Ryan Lue 28.06.2017 / 07:36

2 respostas

5

O OpenPGP (como implementado pelo GnuPG) e o SSH não compartilham um formato de chave comum, embora dependam dos mesmos princípios criptográficos.

O GnuPG implementa o protocolo ssh-agent , embora você ainda possa usar suas chaves OpenPGP através do GnuPG para SSH em outros computadores.

  1. ative o protocolo ssh-agent adicionando enable-ssh-support a ~/.gnupg/gpg-agent.conf
  2. %código%; você pode querer fazer isso no seu export SSH_AUTH_SOCK=$HOME/.gnupg/S.gpg-agent.ssh
  3. mate ~/.profile se iniciado e recarregue ssh-agent ( gpg-agent )
  4. exporte e adicione sua chave pública aos servidores de destino ( gpg-connect-agent reloadagent /bye deve agora conter a linha de chave pública familiar SSH para sua chave OpenPGP)
  5. ssh-add -L para o servidor de destino como com uma chave SSH normal

Isso também funciona muito bem com smartcards OpenPGP ou dongles USB, estou usando isso para proteger minha chave SSH com um YubiKey.

    
por 28.06.2017 / 18:10
1

1) Não vejo nenhuma opção em gpg chamado --export-secret-key .

2) A chave provavelmente teria formato diferente do esperado pelo ssh . Você provavelmente precisará convertê-lo para o formato entendido pelo OpenSSH. Atualize a pergunta com as informações em que formato a chave está.

    
por 28.06.2017 / 13:08