O gpg-agent recusa chaves SSH com o relatório ssh-add "operação recusada pelo agente"

12

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-agentcomo 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 psrelata um gpg-agent --supervisedprocesso 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-agentque acompanha o openssh.

A documentação diz que ssh-adddeve 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-keygenem gpg-agent, e alguém por favor pode cortar e colar uma sessão de terminal mostrar como isso funciona?

user3188445
fonte
A resposta aceita me ajudou, obrigado por fazer essa pergunta. Isso acontece de vez em quando comigo, existe alguma solução permanente?
gf_ 06/06/19

Respostas:

26

Aparentemente, a resposta era a seguinte:

echo UPDATESTARTUPTTY | gpg-connect-agent

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 -Kve, 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 como gpg-agentfornece baixa visibilidade de onde seus segredos estão sendo copiados. Se você responder a essa pergunta porque esperava gpg-agentser uma alternativa melhor ssh-agent, incentivo-o a seguir em ssh-agentvez de tentar minha resposta. O principal motivo para preferir gpg-agenté se você precisa usar o cartão inteligente.

user3188445
fonte
Onde você encontrou essa resposta? Funciona muito bem!
CMCDragonkai
Obrigado por isso, funcionou para mim. Você executa isso regularmente? Em cada inicialização / login? Alguma idéia sobre uma correção "adequada"?
gf_ 4/06/19
2

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-addacionado quando usado com gpg-agent.

A remoção do pinentry-emacs e a instalação do pinentry GTK resolveram o problema aqui.

user30747
fonte
Isso finalmente resolveu meu problema depois de encontrar várias fontes que me disseram para atualizar o startup tty.
William Rosenbloom