GPG-Agent über SSH verwenden

GPG-Agent über SSH verwenden

Ich habe ein Problem, den GPG-Agenten über SSH über eine einzelne Befehlszeile zu verwenden.

Hier ist meine Konfiguration:

Server A: Auslösen des Befehls per SSH.

ssh user@serverB "sudo -E /path/to/script.sh"

Server B: Ausführen des Skripts, das eine Passphrase-Signatur erfordert.

Systeminfo: Ubuntu 12.04

Ich habe den GPG-Agenten auf Server B eingerichtet und diese Konfiguration zu /home/user/.bashrc hinzugefügt:

Invoke GnuPG-Agent the first time we login.                                                                          
# Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?                                    
if test -f $HOME/.gpg-agent-info && \
    kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
    GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
else
    # No, gpg-agent not available; start gpg-agent                                                                     
    eval `gpg-agent --daemon --write-env-file $HOME/.gpg-agent-info`
fi
export GPG_TTY=`tty`
export GPG_AGENT_INFO

Hier ist die Konfiguration des Agenten in /home/user/.gnupg/gpg-agent.conf:

enable-ssh-support
#1 year cache support
default-cache-ttl 31536000
default-cache-ttl-ssh 31536000
max-cache-ttl 31536000
max-cache-ttl-ssh 31536000
#debug-all

Damit dies funktioniert, verbinde ich mich per SSH mit ServerB:

ssh user@serverB

Der GPG-Agent wird gestartet, ich löse manuell das Skript aus:

sudo -E /path/to/script.sh

Anschließend fordert mich der GPG-Agent auf, eine Passphrase anzufordern. Nachdem ich die Passphrase eingerichtet habe, kann ich das Skript erneut ausführen und es führt seine Aufgabe aus, ohne nach einer Passphrase zu fragen.

Mein Problem ist, wenn ich versuche, es aus der Ferne auszulösen, z. B. über:

ssh user@serverB "sudo -E /path/to/script.sh"

Es scheint, dass der GPG-Agent nicht funktioniert, da das Skript mich ständig nach einer Passphrase fragt.

Bearbeiten:

Ich habe den folgenden Inhalt zu /etc/sudoers.d/user hinzugefügt, um das Skript aus der Ferne ohne das Sudo-Passwort auszulösen und die Umgebungsvariablen beizubehalten:

user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh

Irgendwelche Ideen?

Antwort1

Wenn Sie sich anmelden und ssh user@serverBdas Skript anschließend manuell ausführen, werden Sie beim ersten Mal zur Eingabe der Passphrase aufgefordert. Wenn Sie dann das Skript ausführen, stellt shh-agent die gespeicherte Passphrase bereit.

Beim Ausführen ssh user@serverB "sudo -E /path/to/script.shmüssen Sie sich jedoch jedes Mal neu anmelden und ich glaube nicht, dass SSH-Agent das Speichern der Passphrase bei separaten SSH-Anmeldungen unterstützt.

Der Schlüsselbund scheint das zu tun, was Sie benötigen:http://www.funtoo.org/Keychain

Mit Keychain müssen Sie bei jedem Neustart Ihres lokalen Computers nur einmal eine Passphrase eingeben. Keychain erleichtert außerdem Remote-Cron-Jobs das sichere „Einklinken“ in einen lang laufenden SSH-Agent-Prozess, sodass Ihre Skripte schlüsselbasierte Anmeldungen nutzen können.

Die aktuelle Version des Schlüsselbunds unterstützt sowohl den GPG-Agenten als auch den SSH-Agenten.

verwandte Informationen