Ich versuche, meine Verschlüsselungssoftware auf GnuPG zu konsolidieren, und stoße auf ein verwirrendes Problem.
Meine Haupteinheit ist ein Headless-Server, und ich arbeite ausschließlich in tmux. Es gibt keine X-Sitzung und deshalb habe ich gpg-agent so konfiguriert, dass es Pinentry-Curses verwendet. Ich habe gpg-agent so konfiguriert, dass es beim Anmelden mit der ssh-agent-Emulation mit folgendem Skript aufgerufen wird:
if pgrep -u "${USER}" gpg-agent >/dev/null 2>&1; then
eval `cat $gnupginf`
eval `cut -d= -f1 $gnupginf | xargs echo export`
else
eval `gpg-agent -s --enable-ssh-support --daemon`
fi
Ich habe meinen SSH-Schlüssel bereits zu gpg-agent hinzugefügt. Wenn ich jedoch eine andere SSH-Sitzung versuche, bleibt der Befehl hängen.
Ich habe festgestellt, dass, wenn ich gpg-agent töte und eine neue Login-Shell erstelle, der Agent so funktioniert, wie er sollte (Aufrufen von Pinentry-Curses funktioniert dann wie ssh-agent).
Wenn ich jedoch eine andere Anmeldeshell erstelle (indem ich beispielsweise ein anderes tmux-Fenster öffne) und versuche, ssh auszuführen, bleibt der Befehl hängen, und das Fenster "PIN-Cursy" wird über den Inhalt der Anmeldeshell gedruckt, mit der der Agent ursprünglich gestartet wurde.
Wenn ich die Shell geschlossen habe, die den Agenten ursprünglich gestartet hat, wird Pinentry-Curses trotzdem aufgerufen und verursacht eine die CPU lähmende Endlosschleife. (Bekannter Fehler, siehe http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559936 .)
Im Wesentlichen möchte ich wissen, was ich an meinem Setup ändern muss, damit der GnuPG-Agent so nahtlos wie der ssh-Agent funktioniert. Danke für jede Hilfe!