Estou usando o openssh7.5p1 e o gnupg 2.1.21 no arch linux (estas são as versões padrão que acompanham o arch). Eu gostaria de usar gpg-agent
como um agente ssh. Eu coloquei o seguinte no meu ~/.gnupg/gpg-agent.conf
:
pinentry-program /usr/bin/pinentry-qt
enable-ssh-support
O Arch inicia automaticamente um gpg-agent a partir do systemd, então defino
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"
Quando executo ssh-add -l
, ele não relata identidades e ps
relata um gpg-agent --supervised
processo como eu esperaria.
Infelizmente, quando corro ssh-add
, independentemente do tipo de chave, ele não funciona. Aqui está um exemplo de como eu tentei o dsa:
$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation
Todas as outras funções gpg funcionam corretamente (criptografar / descriptografar / assinar). Além disso, as chaves que eu gero funcionam bem se eu as usar diretamente com o ssh, e elas funcionarão corretamente se eu executar o ssh-agent
que acompanha o openssh.
A documentação diz que ssh-add
deve adicionar chaves ~/.gnupg/sshcontrol
, mas obviamente nada está acontecendo.
Minha pergunta: Qual é a maneira mais fácil de carregar uma chave gerada pelo do OpenSSH ssh-keygen
em gpg-agent
, e alguém por favor pode cortar e colar uma sessão de terminal mostrar como isso funciona?
Respostas:
Aparentemente, a resposta era a seguinte:
Não sei por que o programa pinentry funcionou bem para outros usos, como descriptografar arquivos, mas não funcionou
ssh-add
.Enquanto isso agora funciona, ele também faz uma cópia da chave privada ssh que não aparece embaixo
gpg -Kv
e, além disso, parece não permitir que você altere a senha na sua chave privada (já que você não pode editá-la com--edit-key
) . Basicamente, estou bastante infeliz com o modo comogpg-agent
fornece baixa visibilidade de onde seus segredos estão sendo copiados. Se você responder a essa pergunta porque esperavagpg-agent
ser uma alternativa melhorssh-agent
, incentivo-o a seguir emssh-agent
vez de tentar minha resposta. O principal motivo para preferirgpg-agent
é se você precisa usar o cartão inteligente.fonte
No meu caso, o problema foi o programa de pinentry usado. Eu estava usando pinentry-emacs. Parece que não lida com o prompt da janela de entrada de campo de texto duplo que é
ssh-add
acionado quando usado com gpg-agent.A remoção do pinentry-emacs e a instalação do pinentry GTK resolveram o problema aqui.
fonte