macOS 配置 ssh-agent

ssh-agent 命令是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent 在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到 ssh-agent 程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。

其实 ssh-agent 就是一个密钥管理器,运行 ssh-agent 以后,使用 ssh-add 将私钥交给 ssh-agent 保管,其他程序需要身份验证的时候可以将验证申请交给 ssh-agent 来完成整个认证过程。

参数详解

先看一下文档

解决的问题

github 推荐的部署方案有4种:

  1. SSH agent forwarding
  2. HTTPS cloning with OAuth tokens
  3. Deploy keys
  4. Machine users

其中 SSH agent forwarding 转发是最简单的一种方案。它让你可以在服务器上使用本地开发机的 SSH key。

优势

  • 你不需要再服务器生成新的 ssh key,也不用担心如何管理服务器的 ssh key。
  • 服务器没有保存任何 ssh key,如果服务器被盗了,你也不用担心自己的 key 被盗用。

缺点

  • 用户必须手动 SSH 部署,不能使用自动集成或部署服务。
  • windows 用户搞起来很麻烦。

步骤

github 有一些相关的指导文章:

但是这方法在 macOS 10.13 并不好用,反正我这么搞完了是不行,所以参考了 github 上的一些讨论,我做了双保险:

  1. 修改 ~/.ssh/config
  2. 修改 ~/.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

参考

如果觉得我的文章对您有用,请在支付宝公益平台找个项目捐点钱。 @Victor Jan 24, 2018

奉献爱心