Pinentry falha com gpg-agent e SSH

13

Estou executando o Fedora 22. Estou tentando configurar o GnuPG para que minhas conexões SSH sejam autenticadas usando minha subchave de autenticação PGP localizada em meu Yubikey Neo.

Eu tenho uma unidade systemd iniciando o gpg-agent da seguinte forma:

/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket

E eu habilitei o suporte SSH na configuração:

enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk

Outras partes da configuração incluem a adição do keygrip da minha chave para o arquivo ~/.gnupg/sshcontrol , adicionando minha chave pública ao host remoto e declarando as variáveis de ambiente .

Olhando globalmente para os vários logs que a configuração parece funcionar, vejo que o SSH encontra a chave, mas na verdade não está conseguindo assinar com ela. Se eu observar os registros de gpg-agent , posso ver que ele não está iniciando o programa pinentry e, portanto, não está solicitando o código PIN:

2015-07-22 23:23:28 gpg-agent[6758] DBG: error calling pinentry: Ioctl() inappropriate for a device <Pinentry>
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_8 -> BYE
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 -> CAN
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 <- ERR 100663573 The IPC call was canceled <SCD>
2015-07-22 23:23:28 gpg-agent[6758] smartcard signing failed: Ioctl() inappropriate for a device
2015-07-22 23:23:28 gpg-agent[6758] ssh sign request failed: Ioctl() inappropriate for a device <Pinentry>

O que vemos aqui é que, quando usado em combinação com o SSH, algumas chamadas ioctl estão falhando ao chamar o pinentry. No entanto, se eu executar o seguinte:

$ echo "Test" | gpg2 -s

A janela do PIN está aparecendo e tudo está funcionando bem.

Você pode me ajudar a entender o que está acontecendo com essa configuração e o SSH?

    
por Spack 22.07.2015 / 23:47

2 respostas

10

Encontrei a resposta no Site do GPG . O agente não estava conseguindo encontrar em qual tela exibir a janela Pinentry. Eu só tive que colocar o seguinte no meu arquivo .*shrc :

echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1
    
por 26.07.2015 / 11:01
17

Bem, isso funcionou para mim:

export GPG_TTY='tty'

adicione isso ao seu .bashrc ou apenas chute-o antes de usar o gpg.

    
por 10.05.2016 / 08:01