O servidor SSH aceita a chave, mas a assinatura falha

O servidor SSH aceita a chave, mas a assinatura falha

Recentemente, tentei migrar de uma configuração de chave pública ssh padrão para gerenciar minhas chaves com GPG. Seguindoinstruçõesno wiki da minha distribuição, configurei o ssh para usar gpg-agentem vez do padrão ssh-agent. Tenho certeza de que tudo correu bem: mesmo com meu ~/.sshdiretório removido, ssh-add -lmostra a chave que configurei para ele no gpg.

Depois disso, configurei o conteúdo do meu controle remoto ~/.ssh/authorized_keysexatamente para a saída local ssh-add -Le reiniciei o daemon.

Agora, tentando conectar-me ao meu controle remoto usando ssh -v <myremote>, recebo o seguinte erro:

...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: (none) RSA SHA256:<myfingerprint> agent
debug1: Server accepts key: (none) RSA SHA256:<myfingerprint> agent
sign_and_send_pubkey: signing failed: agent refused operation
debug1: Trying private key: /home/zoickx/.ssh/id_rsa
debug1: Trying private key: /home/zoickx/.ssh/id_dsa
debug1: Trying private key: /home/zoickx/.ssh/id_ecdsa
debug1: Trying private key: /home/zoickx/.ssh/id_ed25519
debug1: Trying private key: /home/zoickx/.ssh/id_xmss
debug1: No more authentication methods to try.
<myremote>: Permission denied (publickey).

Claramente, o servidor concorda que minha chave pública está autorizada, mas, por um motivo que não está claro para mim, recusa-se a continuar.

As respostas comuns ao pesquisar no Google " sign_and_send_pubkey: signing failed" devem ser usadas ssh-addpara adicionar a chave privada ausente ou para alterar as permissões nos arquivos-chave. Nenhum deles parece ser útil no meu caso, usando o gpg-agent. Minha chave parece estar disponível para ssh e não há arquivos para alterar as permissões.

Algumas coisas que me preocupam:

  • Eu não sou solicitado a pinentry do gpg em nenhum momento
  • A chave pública tem o formato ssh-rsa <key> (none), terminando com o estranho "none" em vez do padrão user@host.

Informações adicionais sobre minha configuração:

  • gpg 2.2.15
  • libgcrypt 1.8.4
  • Saída de gpgconf:
gpg:OpenPGP:/usr/bin/gpg
gpg-agent:Private Keys:/usr/bin/gpg-agent
scdaemon:Smartcards:/usr/lib/gnupg/scdaemon
gpgsm:S/MIME:/usr/bin/gpgsm
dirmngr:Network:/usr/bin/dirmngr
pinentry:Passphrase Entry:/usr/bin/pinentry
  • gpg funciona conforme esperado para criptografia/descriptografia, com pinentry funcionando
  • Não executando o Gnome ou qualquer outro ambiente de desktop - usando dwm
  • cavalo marinho está instalado

Responder1

Como você não está sendo solicitado a inserir sua senha GPG, o problematalvezque o gpg-agent em execução não pode acessar o display/terminal. Encontrei os mesmos sintomas no Mac OS 10.14 (Mojave) com GPG versão 2.2.17.

Encontrei uma solução alternativa na página de manual do gpg-agent:

Nota: caso o gpg-agent receba uma solicitação de assinatura, pode ser necessário que o usuário forneça uma senha, que é necessária para descriptografar a chave armazenada. Como o protocolo ssh-agent não contém um mecanismo para informar ao agente em qual display/terminal ele está sendo executado, o ssh-support do gpg-agent usará o display TTY ou X onde o gpg-agent foi iniciado. Para mudar esta exibição para a atual, o seguinte comando pode ser usado:

     gpg-connect-agent updatestartuptty /bye

Embora não tenha encontrado uma solução permanente, este comando funciona para mim. Precisa ser repetido após cada reinicialização.

informação relacionada