J'ai un problème avec gpg-agent sur ssh via une seule ligne de commande.
Voici ma configuration:
Serveur A: déclenchement de la commande via ssh.
ssh user@serverB "sudo -E /path/to/script.sh"
Serveur B: exécution du script nécessitant une signature de phrase secrète.
Informations système: Ubuntu 12.04
J'ai installé l'agent gpg sur le serveur B, j'ai ajouté cette configuration à /home/user/.bashrc:
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
Voici la configuration de l'agent dans /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
Donc, pour que cela fonctionne, je me connecte au serverB via ssh:
ssh user@serverB
L'agent gpg est démarré, je déclenche manuellement le script:
sudo -E /path/to/script.sh
Ensuite, l'agent gpg m'invite à demander une phrase secrète, une fois que j'ai configuré la phrase secrète, je peux réexécuter le script et il fait sa tâche sans demander de phrase secrète.
Mon problème est, lorsque j'essaie de le déclencher à distance, par exemple via:
ssh user@serverB "sudo -E /path/to/script.sh"
Il semble que l'agent gpg ne fonctionne pas, car le script ne cesse de me demander une phrase secrète.
Éditer:
J'ai ajouté le contenu suivant à /etc/sudoers.d/user afin de déclencher le script à distance sans le mot de passe sudo et de conserver les variables d'environnement:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
Des idées?
sudo
commande.