ssh-agent
命令是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent
在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到 ssh-agent
程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。
其实 ssh-agent
就是一个密钥管理器,运行 ssh-agent 以后,使用 ssh-add
将私钥交给 ssh-agent 保管,其他程序需要身份验证的时候可以将验证申请交给 ssh-agent
来完成整个认证过程。
参数详解
先看一下文档
解决的问题
github 推荐的部署方案有4种:
- SSH agent forwarding
- HTTPS cloning with OAuth tokens
- Deploy keys
- Machine users
其中 SSH agent forwarding 转发是最简单的一种方案。它让你可以在服务器上使用本地开发机的 SSH key。
优势
- 你不需要再服务器生成新的 ssh key,也不用担心如何管理服务器的 ssh key。
- 服务器没有保存任何 ssh key,如果服务器被盗了,你也不用担心自己的 key 被盗用。
缺点
- 用户必须手动 SSH 部署,不能使用自动集成或部署服务。
- windows 用户搞起来很麻烦。
步骤
github 有一些相关的指导文章:
但是这方法在 macOS 10.13 并不好用,反正我这么搞完了是不行,所以参考了 github 上的一些讨论,我做了双保险:
- 修改
~/.ssh/config
- 修改
~/.zshrc
# ~/.ssh/config
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
# ~/.zshrc
# start the ssh-agent in the background
{ eval "$(ssh-agent -s)"; ssh-add -A; } &>/dev/null
参考