J'utilise Fedora 22. J'essaie de configurer GnuPG pour que mes connexions SSH soient authentifiées à l'aide de ma sous-clé d'authentification PGP qui se trouve sur mon Yubikey Neo.
J'ai une unité systemd démarrant l'agent gpg comme suit:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
Et j'ai activé le support SSH dans la configuration:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
D'autres parties de la configuration incluent l'ajout de la poignée de clé de ma clé au ~/.gnupg/sshcontrol
fichier, l'ajout de ma clé publique à l'hôte distant et la déclaration des variables d'environnement .
En regardant globalement les différents journaux, la configuration semble fonctionner, je peux voir que SSH trouve la clé mais ne parvient pas à signer avec. Si je regarde les journaux de gpg-agent
, je peux voir qu'il ne parvient pas à lancer le pinentry
programme et, par conséquent, ne demande pas le code 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>
Ce que nous voyons ici, c'est que lorsqu'il est utilisé en combinaison avec SSH, certains appels ioctl échouent lors de l'appel de pinentry. Cependant, si je lance ce qui suit:
$ echo "Test" | gpg2 -s
La fenêtre PIN apparaît et tout fonctionne bien.
Pouvez-vous m'aider à comprendre ce qui se passe avec cette configuration et SSH?
tar
versgpg2
sur Mac OS X et la réponse de vigo l'a résolu pour moi.Réponses:
Eh bien, cela a fonctionné pour moi:
ajoutez-le à votre
.bashrc
ou lancez-le simplement avant d'utiliser gpg.la source
J'ai trouvé la réponse sur le site Web de GPG lui-même. L'agent n'arrivait pas à trouver sur quel écran afficher la fenêtre Pinentry. Je viens de mettre les éléments suivants dans mon
.*shrc
dossier:la source
gpg-connect-agent
en sortiecan't connect to the agent: IPC connect call failed
.gpg-agent
fonctionneGPG_AGENT_INFO
correctement et les vars env sont correctement configurés.export GPG_AGENT_INFO
pour.bashrc
corriger le problème ci-dessus avecgpg-connect-agent IPC connect call failed
. Je n'ai pas ajouté cela auparavant parce queecho $GPG_AGENT_INFO
dans ma coquille était bien .. mais il s'avère que c'est toujours requis.