关于git:Windows是否缓存SSH密钥?

Does Windows cache SSH keys?

我最近发布了一个有关Git Bash引用旧GitHub帐户用户名的问题。请在此处参考该帖子:原始帖子

现在我完全相信Windows可以某种方式存储我的ssh信息,并将其用于我的Git bash会话。每当我尝试推送到远程存储库时,都会不断声明

1
remote: Permission to MYUSERNAME/project.git denied to OLD-USER-NAME

我已经尽力了。我搜索了每个目录,我可以找到我的旧用户名的任何引用,但找不到任何内容。我已经重复了至少3次SSH密钥生成过程,但是没有运气。为什么会继续显示我的旧用户名?

所以我的问题是,Windows是否为ssh密钥提供了某种类型的缓存系统?即使我明确地加载了我的新密钥,它仍然不断引用我的旧用户名。我唯一能想到的是我的ssh代理未使用我的新密钥,然后当它尝试连接到github时,它会看到旧密钥并将其与我的旧用户名关联。但同样,由于我从旧的GitHub帐户中删除了旧密钥,因此没有任何意义...

我要杀了Git ..


我认为这里的关键是您可能正在使用HTTPS克隆新的存储库,而该存储库又根本不使用SSH密钥进行身份验证。

我怀疑您的凭据被凭据帮助程序缓存。看到这个:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-windows

在Windows上,如果您使用了wincred助手(git config --global credential.helper wincred),则它将凭据存储在Windows凭据存储中,该存储具有控制面板界面,您可以在其中删除或编辑所存储的凭据。例如看这个:

enter image description here

通过此存储,您的详细信息由Windows登录名保护,并且可以在多个会话中保留。这是在Windows 1.8.1.1的Git中添加的。

所以:

  • 尝试使用以下方法清除https克隆的仓库的凭据缓存,然后重试:

    git credential-osxkeychain擦除主机= github.com协议= https

  • 要么,

  • 使用Windows控制面板的凭据管理器编辑凭据。
  • 然后在再次提示您输入身份验证详细信息时,尝试再次推送到HTTPS克隆的存储库。