Windows是否缓存SSH密钥?

时间:2016-09-02 04:28:40

标签: git github ssh

我最近发布了一个关于Git Bash引用旧GitHub帐户用户名的问题。请在此处参阅该帖子:Original Post

现在我完全相信Windows以某种方式存储我的ssh信息并将其用于我的Git bash会话。当我试图推送到远程仓库时,它会一直说明

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

我已经改变了一切。我搜索了每个目录,我可以查找我的旧用户名的任何参考,但找不到任何东西。我已经重复了SSH密钥生成过程至少3次,没有运气。为什么它会不断提出我的旧用户名?

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

我要杀了Git ..

1 个答案:

答案 0 :(得分:2)

我认为这里的关键是您可能正在使用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登录进行保护,并且可以在多个会话中保留。这是在Git for Windows 1.8.1.1中添加的。

所以:

  1. 尝试使用以下内容清除https克隆存储库的凭据缓存,然后重试:

    git credential-osxkeychain erase host = github.com protocol = https

  2. OR,

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