多个SSH Key自动化配置

1,919 阅读2分钟

在实际开发中经常会遇到连接不同的远程代码管理平台,比如Github、gitlab、coding,如果采用ssh验证方式就需要在本地生成相应的SSH Key,以及配置config文件,具体步骤可参考juejin.cn/post/684490…,如果终端提示以下错误

Could not open a connection to your authentication agent.

则需要启动ssh-agent,

eval `ssh-agent -s`

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

接下来执行

ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_personal

最后再测试一下能否正常连接

$ ssh -T git@home.github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.

但是如果当Mac每次重启之后都需要重新 ssh-add,一定程度上会影响我们的工作效率,为了避免这样重复性的工作,我们可以通过将SSH Key加入Keychain中,命令如下:

ssh-add -K ~/.ssh/id_rsa_company

但是重启后测试Keychain并未保存相应的SSH Key,原因是从macOS Sierra 10.12.2以后,SSH的配置选项中多了“UseKeychain”选项,所以要解决这个问题需要借助UseKeychain,在~/.ssh/config文件中添加下面这段话,问题就可以解决了:

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa_company

当然除了通过Keychain保存SSH Key这个方式以外,也可以通过Mac自带的Automator(自动操作)来解决

1.首先创建一个Automator应用程序类型文件

2.选择运行shell脚本,在输入框输入ssh-add命令,点击顶部未命名保存

3.打开系统偏好设置->用户与群组,选择登录项,选择保存的.app文件为开机启动

这样就可以在开机时自动运行ssh-add命令了,可在终端通过ssh-add -l命令验证。(目前本人也是采用第二种方式,亲测有效😊)