今天,帮组里的实习生“解决”了拉取代码需要输入 SSH Passphrase 的问题,特此记录一下。

问题描述

实习生遇到的问题是这样的:无论是在 VSCode 还是在命令行,执行代码操作,都需要输入 Passphrase 。通常来说,输入 Passphrase 是有些麻烦,但这也不是个问题。可问题就在于,该同学不知道设置了啥密码。

突发奇想,让他输入了机器的开机密码,巧了,验证通过。估计是在一开始生成公私钥时,在提示是否要设置 Passphrase 时,以为是要输入开机密码,才有了这一出。

“问题”排查出来后,为了方便该同学更轻松地拉取代码,我将 Passphrase 删除了。

解决方法

删除 SSH 公私钥中的 Passphrase 得区分两种情况:知道 Passphrase、不知道 Passphrase。

知道 Passphrase

当我们知道 Passphrase 时,可通过执行以下命令删除 Passphrase 。

ssh-keygen -f ~/.ssh/id_rsa -p

执行期间,需要我们输入 Old Passphrase 和 New Passphrase ,注意 New Passphrase 无需设置,直接 Enter 即可。命令执行完成,即可移除 Passphrase 。

不知道 Passphrase

如果是使用 OS X 系统,可以不用重新生成,具体方法参考 GitHub 文档

如果不是 OS X 系统,我们就只能重新生成 SSH 公私钥文件了,而且生成后还得在 GitHub、GitLab 等代码托管平台添加新的公钥,还是挺繁琐的。

# 备份原有的公私钥文件
mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

# 重新生成公私钥文件
ssh-keygen -o