git: osxkeychain 凭据助手默默地记不住 username/password

git: osxkeychain credential helper silently fails to remember username/password

This page 和许多类似的文章给出了使用 git 设置 osxkeychain 凭证助手的说明。我已按照这些说明进行操作;一切似乎都很好。我可以看到我在 Keychain Access 应用程序中的用户名和密码是正确的,并且 git-credential-osxkeychain 可以访问 github.com 记录。当我键入 git config -l 时,我可以看到条目 credential.helper=osxkeychain 以及正确的 user.name 和 user.email 条目。当我 运行 git credential-osxkeychain 时,我看到了我显然应该看到的用法消息。我在任何时候都不会收到错误消息。一切似乎都设置正确。

但是,无论我 git 推送特定存储库多少次,它总是询问我的用户名和密码。输入在我的钥匙串访问条目中找到的用户名和密码有效;所以它似乎不是登录问题。此外,当我键入 git credential-osxkeychain erase(或 git-credential-osxkeychain erase)时,该命令静默挂起,据我所知,是无限期地挂起。

到目前为止,我还找不到任何记录此问题的信息。 This question 提出了类似的问题,但我的 git 版本是 2.6.4,所以解决方案没有帮助。为什么要这样做以及如何让 git 使用 osxkeychain 凭据帮助程序记住我的用户名和密码?

我正在使用 Mac OS X 10.11.4 和 git 版本 2.6.4。

编辑 ~/.ssh/config 并将 UseKeychain yes 添加到您希望钥匙串记住其密码的每个主机。

例如,如果您尝试为 GitHub 执行此操作:

Host github.com
    IdentityFile ~/.ssh/your_github_cert_rsa
    UseKeychain yes

如果你想为每个主机启用它,只需添加:

Host *
    UseKeychain yes

这是 Apple 在 macOS Sierra 10.12.2 中添加的新要求,您可以在 10.12.2 中了解更多信息运行 man ssh_config:

UseKeychain

             On macOS, specifies whether the system should search for
             passphrases in the user's keychain when attempting to use a par-
             ticular key. When the passphrase is provided by the user, this
             option also specifies whether the passphrase should be stored
             into the keychain once it has been verified to be correct.  The
             argument must be ``yes'' or ``no''.  The default is ``no''.

在Mac OS 10.11下,您可以检查是否使用变量

禁用钥匙串
KeychainIntegration
  Specifies whether to enable Keychain support on Mac OS X.  
  If Keychain support is enabled, then passwords for identities can be 
  managed via the Mac OS X Keychain.
  The value for this keyword must be ``yes'' or ``no''.  The default is ``yes''.
AskPassGUI
  Show the system password prompt