我在通过单个命令行在ssh上使用gpg-agent时遇到问题。
这是我的配置:
服务器A:通过ssh触发命令。
ssh user@serverB "sudo -E /path/to/script.sh"
服务器B:执行需要密码签名的脚本。
系统信息:Ubuntu 12.04
我已经在服务器B上设置了gpg-agent,并将此配置添加到/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
这是/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
因此,为了使它起作用,我通过ssh连接到serverB:
ssh user@serverB
gpg-agent启动后,我手动触发了脚本:
sudo -E /path/to/script.sh
然后,gpg-agent提示我要求输入密码,一旦我设置了密码,就可以再次运行脚本,并且它在执行任务时无需输入密码。
我的问题是,当我尝试远程触发它时,例如通过:
ssh user@serverB "sudo -E /path/to/script.sh"
似乎gpg-agent无法正常工作,因为脚本不断要求我输入密码。
编辑:
我已将以下内容添加到/etc/sudoers.d/user中,以便在没有sudo密码的情况下远距离触发脚本并保留环境变量:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
有任何想法吗?
我已经使用NOPASSWD为试图远程运行的用户/命令管理了sudoers文件。我可能也需要对此进行精确调整。它要求我输入密码。
—
托尼
好,那是有道理的;感谢您的澄清,我只是想确保我们不会被明显的东西所咬住!
—
MadHatter
sudo
命令。