使用 Apple 的 Keychain 保存 SSH 的 passphase
SSH 的私钥是非常重要的数据,一旦泄露可能回造成非常大的损失,但是我注意到很多开发人员并没有给私钥设置密码,可能是因为觉得麻烦,因为每次使用都要输入密码。
一些恶意的软件或者脚本完全可以扫描到~./ssh/
这个目录下的所有文件,这里保存了登陆服务器的私钥和登陆服务器的记录,一旦被不法分子拿到,后果可能超乎想象。
所以,建议给私钥额外添件一个密码,这样即使被坏人拿到,也无法使用。
但是,我们需要在易用性和安全性之间保持一种平衡,即使给私钥加上密码,也没有明显降低易用性,不会要求我们在每次使用的时候都输入密码。
Apple 的 Keychain 是一个支持端到端加密的工具,所以密码保存在里面是安全的。我们只需要在首次使用时,输入:
ssh-add --apple-use-keychain ~/.ssh/id_rsa
这条命令会把密钥交给 ssh-agent
管理,同时密码会自动保存到 Apple 的 keychain
里面。
ssh-agent
是一个守护进程,用来管理 ssh 连接过程中需要的认证信息,以后每次连接的时候就不需要手动输入密码了,同时你的私钥是安全的。
到这一步已经基本接近完美了,但是如果你重启电脑,发现还是需要你输入密码,这是因为 ssh-agent 不能自动从 Apple 的 Keychain 里面加载密码,所以需要在 ~./ssh/config
里写入如下内容:
Host *
AddKeysToAgent yes
参考资料:
How can I permanently add my SSH private key to Keychain so it is automatically available to ssh?
SSH-agent does not automatically load passphrases on the OSX Sierra keychain during startup