【问题标题】:git suddenly started to ask for SSH key password every timegit突然开始每次都询问SSH key密码
【发布时间】:2015-08-10 07:19:37
【问题描述】:

所以,我将 git 和 github 与 MFA 一起使用,因此,为了避免烦人的密码询问,一年多来我一直使用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 配置文件文件现在与您的旧配置文件冲突。
  • 不,不是这样。还是谢谢。

标签: git github ssh


【解决方案1】:

既然你提到了,brew,我假设你在 Mac 上运行。这也发生在我身上,解决方案是确保我将密码添加到钥匙串(ssh-agent 的 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 帮助程序):

【讨论】:

  • ssh-add -K 为我解决了问题。请注意,我在更新到 macOS 10.12.3 后开始遇到这种情况。
  • 这仅适用于我的 macbook 的下一次重新启动。然后它再次要求输入密码..
  • @Andru 我添加了有关 osx 钥匙串助手的更多信息,它将负责重启。
  • @Subfuzion 谢谢,但是“最后,确保将其添加到您的 ~/.gitconfig 到”是什么意思? [credential] helper = osxkeychain 已经是我的~/.gitconfig 文件的一部分了..
  • @Andru 我编辑了答案以使其更清楚,这只是与缓存 HTTPS 凭据相关的额外信息。与 ssh 相关的 OP 问题。关于更新 ~/.ssh/config 的部分涉及确保密码被自动添加到钥匙串中。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2021-07-02
      相关资源
      最近更新 更多