Linux 登陆用户时启动 ssh-agent 并在退出时关闭

原创
2017/12/20 17:25
阅读数 4.1K

文/Fenying

使用 Git/SSH/SCP 之类操作的时候,一般都是用 ssh 密钥的,但是每次都要先启动 ssh-agent 才能注册密钥,挺烦的,于是尝试了一下,能不能在登陆终端的时候自动启动 ssh-agent,然后关闭的时候自动kill掉 ssh-agent。

自动启动的原理很简单,就是在 ~/.bashrc 里面加入

eval $(ssh-agent -s)

但是自动关闭就没那么简单了,我在 CentOS 7 里面,想在 ~/.logout 里使用

eval $(ssh-agent -k)

并不起作用…… Google 了一下,发现可以在 ~/.bashrc 里面再写一句:

trap 'test -n "$SSH_AGENT_PID" && eval `/usr/bin/ssh-agent -k`' 0

成功了,现在登陆会自动启动 ssh-agent,并且退出的时候自动kill掉了。

然而,其实上面的还是有问题的,比如说,SCP命令无效,SFTP(使用FlashFXP)无法登陆等等。

原因是 ssh-agent 在启动和退出的时候都会在终端吼一嗓子,输出一句话……

所以,不让它说话就是了:

eval $(ssh-agent -s) > /dev/null
trap 'test -n "$SSH_AGENT_PID" && eval `/usr/bin/ssh-agent -k` > /dev/null' 0

That's all.

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部