Git突然开始每次都要求输入SSH密钥密码

21
所以,我使用带有MFA的git和github,为了避免烦人的密码询问,一年多来我一直在使用git@github.com:user/repo.git URL样式。

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

到目前为止,我所做的:

  • 检查了我的配置,看起来没问题,但这是它(相关部分):

    [user]
       name = Carlos Alexandro Becker
       email = caarlos0@gmail.com
       helper = osxkeychain
    
  • 尝试更新git和osxkeychain,当前版本为:

  • git 2.4.1
    OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
    
  • 清理了GitHub.com的osxkeychain

  • 检查ssh-agent是否正在运行,重新添加了我的身份验证信息

我看到的一个奇怪的事情是这个:

$ 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配置文件,它可能是由其他应用程序安装的,并且现在与您的旧配置文件发生冲突。 - gaborous
不,不是那个。无论如何还是谢谢。 - caarlos0
4个回答

41

根据你提到的 brew,我猜你在用 Mac。我也遇到过这种情况,解决方法是确保把密码加入钥匙串(Mac 版本的 ssh-agent 包含钥匙串支持,会自动启动):

$ 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密钥的问题。如果您想要在Mac上缓存您的HTTPS凭证,以下也非常有用。您可以通过使用凭证助手来完成此操作。为了告诉git使用osxkeychain助手,请确保将其添加到您的~/.gitconfig(或~/.config/git/config)中。

[credential]
    helper = osxkeychain

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

$ git config --global credential.helper osxkeychain

请查看以下链接以获取更多详细信息(包括如何验证您的系统是否安装了 osxkeychain 帮助程序):


3
对我来说,ssh-add -K 起了作用。请注意,这是在更新到 macOS 10.12.3 后开始出现的问题。 - Fostah
1
这仅在我的 MacBook 下一次重启之前起作用。然后它会再次要求输入密码短语。 - Andru
@Andru 我添加了更多关于osx钥匙链助手的信息,它将负责重启。 - Subfuzion
@Subfuzion 谢谢,但是你说的“最后,确保将其添加到您的/.gitconfig中”是什么意思? [credential] helper = osxkeychain 已经包含在我的 `/.gitconfig` 文件中了。 - Andru
@Andru 我编辑了答案,以使其更清晰,这只是与缓存HTTPS凭据相关的额外信息。OP问题涉及ssh。关于更新您的~/.ssh/config部分涉及确保口令自动添加到钥匙串中。 - Subfuzion
@Fostah,苹果在10.12.2中更改了行为 https://developer.apple.com/library/archive/technotes/tn2449/_index.html - wisbucky

2

看起来我的 ssh-agent 出了些问题。

我试图停止它(使用 kill -9),然后再次启动它(使用 ssh-agent),但这并没有解决问题。

在我运行 eval 'ssh-agent -s' 后,一切都恢复正常了。

尽管如此,我仍然不知道为什么会发生这种情况...


0
在我的情况下,这是因为我更改了用于Github的ssh密钥,但忘记在~/.ssh/config中更改条目。
我应该将IdentityFile ~/.ssh/id_rsa这一行更改为新SSH密钥的位置。

0
在我的情况下,在PopOs(Ubuntu)上,我所要做的就是:
ssh-add ~/.ssh/{ssh_key}

我不确定最初是什么原因导致它丢失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接