Sto riscontrando un problema con l'utilizzo dell'agente gpg su ssh tramite una singola riga di comando.
Ecco la mia configurazione:
Server A: attivazione del comando tramite ssh.
ssh user@serverB "sudo -E /path/to/script.sh"
Server B: esecuzione dello script che richiede una firma passphrase.
Informazioni di sistema: Ubuntu 12.04
Ho installato l'agente gpg sul server B, ho aggiunto questa configurazione a /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
Ecco la configurazione dell'agente 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
Quindi, per far funzionare tutto ciò, mi collego al serverB tramite ssh:
ssh user@serverB
L'agente gpg è avviato, innesco manualmente lo script:
sudo -E /path/to/script.sh
Quindi, l'agente gpg mi richiede di chiedere una passphrase, una volta che ho impostato la passphrase, posso eseguire nuovamente lo script e sta facendo il suo compito senza chiedere una passhprase.
Il mio problema è che quando provo ad attivarlo a distanza, ad esempio tramite:
ssh user@serverB "sudo -E /path/to/script.sh"
Sembra che l'agente gpg non funzioni, perché lo script continua a chiedermi una passphrase.
Modificare:
Ho aggiunto il seguente contenuto a /etc/sudoers.d/user per attivare lo script in remoto senza la password sudo e mantenere le variabili di ambiente:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
Qualche idea?
sudo
comando.