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 no meu Yubikey Neo.
Eu tenho uma unidade systemd iniciando o gpg-agent da seguinte maneira:
/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 instalação incluem adicionar o keygrip da minha chave ao ~/.gnupg/sshcontrol
arquivo, adicionar minha chave pública ao host remoto e declarar as variáveis de ambiente .
Observando globalmente os vários logs em que a instalação parece funcionar, vejo que o SSH encontra a chave, mas na verdade não está conseguindo assinar com ela. Se eu olhar os logs de gpg-agent
, posso ver que ele está falhando ao iniciar o pinentry
programa 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 SSH, algumas chamadas ioctl estão falhando ao chamar 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 SSH?
tar
paragpg2
no Mac OS X e a resposta do vigo resolveu isso para mim.Respostas:
Bem, isso funcionou para mim:
adicione isso ao seu
.bashrc
ou apenas chute-o antes de usar o gpg.fonte
Encontrei a resposta no próprio site do GPG . O agente não conseguiu localizar em qual tela exibir a janela Pinentry. Eu apenas tive que colocar o seguinte no meu
.*shrc
arquivo:fonte
gpg-connect-agent
isso saídascan't connect to the agent: IPC connect call failed
.gpg-agent
está funcionando bem e os ambientesGPG_AGENT_INFO
estão configurados corretamente.export GPG_AGENT_INFO
para.bashrc
corrigir o problema acima comgpg-connect-agent IPC connect call failed
. Eu não adicionei isso anteriormente porqueecho $GPG_AGENT_INFO
no meu shell estava bom .. mas acontece que ainda é necessário.