Ich verwende Fedora 22. Ich versuche, GnuPG so einzurichten, dass meine SSH-Verbindungen mit meinem PGP-Authentifizierungsunterschlüssel authentifiziert werden, der sich auf meinem Yubikey Neo befindet.
Ich habe eine Systemeinheit, die den gpg-Agenten wie folgt startet:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
Und ich habe die SSH-Unterstützung in der Konfiguration aktiviert:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
Andere Teile des Setups umfassen das Hinzufügen des Schlüsselgriffs meines Schlüssels zur ~/.gnupg/sshcontrol
Datei, das Hinzufügen meines öffentlichen Schlüssels zum Remote-Host und das Deklarieren der Umgebungsvariablen .
Wenn ich mir die verschiedenen Protokolle anschaue, die das Setup zu funktionieren scheint, sehe ich, dass SSH den Schlüssel findet, aber tatsächlich nicht damit signiert. Wenn ich mir die Protokolle von ansehe gpg-agent
, kann ich feststellen, dass das pinentry
Programm nicht gestartet werden kann und daher kein PIN-Code angefordert wird:
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>
Was wir hier sehen, ist, dass in Kombination mit SSH ein ioctl-Aufruf fehlschlägt, wenn Pinentry aufgerufen wird. Wenn ich jedoch Folgendes ausführe:
$ echo "Test" | gpg2 -s
Das PIN-Fenster öffnet sich und alles funktioniert einwandfrei.
Können Sie mir helfen zu verstehen, was mit diesem Setup und SSH los ist?
tar
angpg2
auf Mac OS X zu leiten , trat ein ähnliches "Problem mit dem Agenten: Unangemessenes ioctl für Gerät" auf, und die Antwort von vigo löste es für mich.Antworten:
Nun, das hat bei mir funktioniert:
füge dies zu deinem hinzu
.bashrc
oder trete es einfach, bevor du gpg verwendest.quelle
Ich habe die Antwort auf der GPG-Website selbst gefunden. Der Agent konnte nicht finden, auf welchem Bildschirm das Pinentry-Fenster angezeigt werden soll. Ich musste nur Folgendes in meine
.*shrc
Akte aufnehmen:quelle
gpg-connect-agent
, gibt es auscan't connect to the agent: IPC connect call failed
.gpg-agent
läuft gut undGPG_AGENT_INFO
env vars sind richtig eingerichtet.export GPG_AGENT_INFO
zu.bashrc
Fest der obigen Ausgabe mitgpg-connect-agent IPC connect call failed
. Ich habe dies vorher nicht hinzugefügt, weilecho $GPG_AGENT_INFO
in meiner Shell alles in Ordnung war .. aber es stellt sich heraus, dass es immer noch erforderlich ist.