Ich habe ein Problem mit dem gpg-agent über ssh über eine einzige Befehlszeile.
Hier ist meine Konfiguration:
Server A: Auslösen des Befehls über ssh.
ssh user@serverB "sudo -E /path/to/script.sh"
Server B: Ausführen des Skripts, für das eine Passphrasensignatur erforderlich ist.
Systeminfo: Ubuntu 12.04
Ich habe den GPG-Agenten auf dem 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 über ssh mit dem ServerB:
ssh user@serverB
Der GPG-Agent wird gestartet, ich löse das Skript manuell aus:
sudo -E /path/to/script.sh
Dann fordert mich der GPG-Agent auf, nach einer Passphrase zu fragen. Sobald ich die Passphrase eingerichtet habe, kann ich das Skript erneut ausführen und es erledigt seine Aufgabe, ohne nach einer Passphrase zu fragen.
Mein Problem ist, wenn ich versuche, es fern auszulösen, zB über:
ssh user@serverB "sudo -E /path/to/script.sh"
Es scheint, dass der gpg-Agent nicht funktioniert, weil das Skript mich immer wieder nach einer Passphrase fragt.
Bearbeiten:
Ich habe /etc/sudoers.d/user den folgenden Inhalt hinzugefügt, um das Skript ohne das sudo-Passwort entfernt auszulösen und die Umgebungsvariablen beizubehalten:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
Irgendwelche Ideen?
sudo
Befehl zu authentifizieren .