Estou tendo um problema ao usar o gpg-agent sobre ssh através de uma única linha de comando.
Aqui está minha configuração:
Servidor A: acionando o comando via ssh.
ssh user@serverB "sudo -E /path/to/script.sh"
Servidor B: Executando o script que requer uma assinatura de senha.
Informações do sistema: Ubuntu 12.04
Eu configurei o gpg-agent no servidor B, adicionei essa configuração ao /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
Aqui está a configuração do agente em /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
Portanto, para fazer isso funcionar, eu me conecto ao serverB via ssh:
ssh user@serverB
O gpg-agent é iniciado, eu aciono manualmente o script:
sudo -E /path/to/script.sh
Em seguida, o gpg-agent me solicita uma senha, depois de configurá-la, posso executar o script novamente, e ele está executando sua tarefa sem solicitar uma senha.
Meu problema é que, quando tento acioná-lo à distância, por exemplo, via:
ssh user@serverB "sudo -E /path/to/script.sh"
Parece que o gpg-agent não está funcionando, porque o script continua me pedindo uma senha.
Editar:
Adicionei o seguinte conteúdo ao /etc/sudoers.d/user para acionar o script à distância sem a senha sudo e manter as variáveis de ambiente:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
Alguma ideia?
sudo
comando.Respostas:
Quando você faz o login
ssh user@serverB
e executa manualmente o script, ele solicitará a senha pela primeira vez e, quando você executar o script, o shh-agent fornecerá a senha armazenada.No entanto, quando você executa,
ssh user@serverB "sudo -E /path/to/script.sh
você está fazendo um novo login a cada vez, e não acho que o ssh-agent suportaria salvar a senha em logins SSH separados.As chaves parecem fazer o que você precisa: http://www.funtoo.org/Keychain
fonte
ssh
correntes, você está errado. Eu faço isso muitas vezes ao dia;ssh
do host A ao host B, depois ao C e depois ao D, com o agente ssh na cabeça realizando operações importantes o tempo todo.sudo -E /path/to/script.sh
no servidor B, algo aqui está exigindo a senha. EDIT: Embora, com o seu comentário em mente, possa fazer mais sentido para ele configurar A como o cliente do agente e usar o encaminhamento ssh-agent, que por sua vez permitiria executar o script no servidor B sem solicitar uma senha. .