配置SSH agent 和 SSH agent forwarding转发
0x01. ssh-agent转发 经常使用SSH而且私钥设置了passphrase的同学会遇到一个问题,就是每次登录主机都要输入一遍passphrase会很麻烦,这时ssh-agent命令就有用了。 ssh-agent是OpenSSH默认自带的并且在后台一直运行的daemon。假设已经通过ssh-keygen生成了自己的私钥,可以在GitHub上传公钥后使用ssh -T git@github.com命令测试通过。 $ ssh-agent SSH_AUTH_SOCK=/var/folders/k6/k5s6nj_j2k70jzp7plv120y40000gn/T//ssh-fcn9OCl9La13/agent.2462; export SSH_AUTH_SOCK; SSH_AGENT_PID=2463; export SSH_AGENT_PID; echo Agent pid 2463; 但上面的命令没用,我们需要eval命令导入环境变量 $ eval $(ssh-agent) Agent pid 2533 $ echo $SSH_AGENT_PID 2553 $ echo $SSH_AUTH_SOCK /var/folders/k6/k5s6nj_j2k70jzp7plv120y40000gn/T//ssh-6bHKwvKJ6AO1/agent.2532 ssh-agent已经运行了,最后需要把私钥加入cache。 $ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/fython/.ssh/id_rsa: Identity added: /Users/fython/.ssh/id_rsa (/Users/fython/.ssh/id_rsa) 可以使用ssh-add -l查看缓存的私钥。现在再登录使用公钥认证的主机不需要输入passphrase了。 这个每次开机都要运行一遍上面的命令好像有点麻烦,值得高兴的是大多数的linux发行版都在登录图形界面时都会启动一个ssh-agent进程,你不需要任何操作,可以使用ps -ef | grep ssh-agent查看。如果你的系统没有这个功能,请在~/.xsession文件中加入: ssh-agent gnome-session Note:请使用你自己的窗口管理器取代gnome-session。 本人使用Arch,i3桌面环境的时候需要在~/.profile中加入才能启用 export $(gnome-keyring-daemon --start --components=secrets,ssh) 0x02. 使用SSH agent forwarding多机器转发 设想一下当你有两台server如A和B,你都可以ssh上去但你已经登入了上了A想从A上面ssh到B又不想将私钥上传到A该怎么办,一个很好的办法是开启ForwardAgent yes。 修改全局配置/etc/ssh/ssh_config或修改个人~/.ssh/config配置推荐第二种,没有就新建文件,然后加入 Host * ForwardAgent yes 最后去A和B服务器上~/....