在实际开发中经常会遇到连接不同的远程代码管理平台,比如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命令验证。(目前本人也是采用第二种方式,亲测有效😊)