Wie starte ich gpg-agent unter Ubuntu 16.04 richtig?

2071
chriskvik

Ich habe ein Yubikey4 mit meinem gpg-Schlüssel als Smartcard. Ich kann gpg2 card-statusund es gibt mir den ganzen Code, der alle meine Unterschlüssel zeigt und alles ist in Ordnung.

Ich wollte dann gpg-agent für ssh mit meinem gpg-Schlüssel in entfernte Hosts verwenden. Ich fügte zu meinem hinzu~/.gnupg/gpg-agent.conf

enable-ssh-support pinentry-program /usr/bin/pinentry-curses default-cache-ttl 60 

Ich habe das auch SSH_AUTH_SOCKin meiner .bashrc so eingestellt:

export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh 

Wenn ich dann meinen Rechner neu starte, wird der Schlüssel hinzugefügt und mit angezeigt ssh-add -l

4096 SHA256....... cardno: ..... (RSA) 

Jeder Versuch, eine SSH-Verbindung zu einem Remote-Server herzustellen, hängt jedoch davon ab, ssh -vvvdass der Computer versucht, den Schlüssel zu signieren und zu senden, der Agent den Vorgang jedoch ablehnt.

Wenn ich dann ein Skript aus verschiedenen Quellen ausführe, funktioniert alles.

 killall gpg export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keet-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses  

Ich habe versucht, dies mit bashrc zu implementieren, es mit meinem deskopt-manager und einem Benutzer systemd zu erledigen, ohne Erfolg.

Kann jemand mir helfen herauszufinden, wie ich dies automatisch beim Login starten kann, ohne dass "mein Skript" ausgeführt werden muss?

1
Das Einzige, was mir einfällt, ist sicherzustellen, dass alle Ihre GPG-Agenten alle dieselbe Version haben. Ich stelle fest, dass Sie "gpg2" als Befehl ausführen, und da Killall gpg das Problem löst, gehe ich naiv davon aus, dass entweder scdaemon oder gpg-agent eine alte Version ist. plttn vor 6 Jahren 0

2 Antworten auf die Frage

1
harrymc

Kurze Antwort :

Als root ausführen:

$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf # editor /etc/X11/Xsession.options ... comment out "use-ssh-agent" ... # aptitude purge libpam-gnome-keyring 

Melden Sie sich von Ihrer Desktopsitzung ab, und melden Sie sich erneut an. Stellen Sie sicher, dass $ SSH_AUTH_SOCK auf Ihren GPG-Agenten zeigt.

Erklärung:

Standardmäßig aktiviert der gpg-agent seinen SSH-Agenten nicht. Dies geschieht entweder durch Übergabe --enable-ssh-supportder Befehlszeile oder durch Hinzufügen einer Zeile zu einer Konfigurationsdatei wie oben.

Zweitens das Problem anderer SSH-Agenten. Der OpenSSH-Agent wird standardmäßig /etc/X11/Xsession.d/90x11-common_ssh-agentgestartet, indem er vom x11-common-Paket aus eingerichtet wird. Wenn Sie GNOME ausführen, wird auch der GNOME Keyring-Agent ausgeführt. Beides wirkt sich auf unseren GnuPG-Agenten aus.

Das Deaktivieren des OpenSSH-Agenten erfolgt /etc/X11/Xsession.optionswie oben beschrieben.

Das Deaktivieren des GNOME Keyring-Agenten ist möglicherweise etwas komplizierter. Mit Xfce kann das Paket libpam-gnome-keyring deinstalliert werden, und es kann sichergestellt werden, dass Xfce keine GNOME-Dienste startet ( Einstellungen → Sitzung und Start → Erweitert → GNOME-Dienste beim Start starten - wenn angekreuzt).

Fehlerbehebung

Wenn SSH_AUTH_SOCK nach all dem immer noch nicht auf Ihren gpg-Agenten zeigt, kann es sein, dass ein anderer Agent noch Ihren GnuPG-Agenten stört. Die Variable SSH_AGENT_PID sollte die PID des Agentenprozesses enthalten, wodurch der Agent identifiziert werden kann.

Quelle: Mein perfekter GnuPG / SSH-Agent-Setup

0
NOLFXceptMe

Legen Sie das Skript ein /etc/profile.d. Stellen Sie sicher, dass das ausführbare Bit set ( chmod +x) und die Datei eine .shErweiterung hat.

Warum? Was macht das genau? Pimp Juice IT vor 6 Jahren 0
https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fprofile.d.2F.2A.sh NOLFXceptMe vor 6 Jahren 0