当我编写.bashrc脚本来保存pubkey密码时,最重要的命令是:
eval `ssh-agent -s`
问题是,如果会话退出,ssh-agent将自动关闭,这导致需要在下一个会话中再次输入密码。我想要的是只设置一次密码,直到系统重启。所以我试试:
eval `nohup ssh-agent -s`
希望ssh-agent可以像其他长期进程一样活出开始会话。但是,它不起作用......为什么?以及如何实现我的目标?
提前谢谢。
仅供参考,整个剧本是:
ssh-reagent() {
for agent in $TMPDIR/ssh-*/agent.*; do
export SSH_AUTH_SOCK=$agent
if ssh-add -l &> /dev/null; then
echo "Found working SSH Agent:"
ssh-add -l
return
else
rm -rf $(dirname ${SSH_AUTH_SOCK})
export SSH_AUTH_SOCK=
fi
done
eval `ssh-agent -s` # <-- How to keep ssh-agent alive when logout?
ssh-add ~/.ssh/id_rsa
}
ssh-reagent
答案 0 :(得分:0)
没有!错误的做法!相反,你只需要注意在哪里你启动ssh-agent。您不应该为您启动的每个shell执行此操作,但只能为登录shell执行一次。那个产生用户的所有其他进程,因此代理将全部可用,直到用户再次注销。
典型的地方是:
/etc/X11/xdm/sys.xsession
或~/.xsession
进行图形登录/etc/profile
,~/.profile
或~/.bash_profile
这取决于您的发行量和个人喜好。