git突然开始每次都要求SSH密钥密码

git suddenly started to ask for SSH key password every time

因此,我将 git 和 github 与 MFA 一起使用,因此,为了避免烦人的密码询问,一年多来我一直在使用 git@github.com:user/repo.git URL风格。

几天前,我 运行 一个 brew update,现在,每次尝试与 github 服务器同步时,git 都会问我密钥密码。

到目前为止我做了什么:

我看到的一件奇怪的事情是:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa.pub'
Enter passphrase for /Users/carlos/.ssh/id_rsa.pub:

因此,我的猜测是 ssh-agent 无法正常工作,但我不知道为什么也不知道如何修复它。

我的 ssh-agent 好像出了点问题。

我试图停止它(使用 kill -9)并再次启动它(使用 ssh-agent),但它无法解决问题。

在我 运行 eval 'ssh-agent -s' 之后,一切又开始按预期工作了。

我仍然不知道为什么会这样..

既然你提到了 brew,我假设你是 运行 Mac。这也发生在我身上,解决方案是确保我将密码添加到钥匙串([=17= 的 Mac 版本,在 Mac 上自动启动,包括钥匙串支持):

$ ssh-add -K

并存储不同密钥的密码:

$ ssh-add -K /path/to/private/key/file

特别是在我的情况下(因为我为 GitHub 使用了单独的密钥):

$ ssh-add -K ~/.ssh/github_rsa

自动将密钥加载到 ssh-agent 并将密码短语存储在您的钥匙串中,您需要修改您的 ~/.ssh/config:

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

我从这里获得了这个信息:

以上解决了 ssh 密钥的 OP 问题。如果您还想缓存 HTTPS 凭据,以下内容对 Mac 用户也很有用。您可以使用凭据助手来执行此操作。要告诉 git 使用 osxkeychain 助手,请确保将其添加到您的 ~/.gitconfig(或 ~/.config/git/config)。

[credential]
    helper = osxkeychain

您可以从命令行设置此条目,而不是直接编辑文件:

$ git config --global credential.helper osxkeychain

查看这些链接了解更多详情(包括如何验证您的系统是否安装了 osxkeychain 帮助程序):

就我而言,这是因为我更改了用于 Github 的 ssh 密钥而忘记更改 ~/.ssh/config.

中的条目

我应该将行 IdentityFile ~/.ssh/id_rsa 更改为新 SSH 密钥的位置。