Teague Teague - 1 year ago 76
Git Question

Does Windows cache SSH keys?

I recently posted a question regarding Git Bash referencing an old GitHub account username. Refer to that post here: Original Post

Now I'm completely convinced that Windows is somehow storing my ssh info and using that for my Git bash session. When ever I try to push to a remote repo, it keeps stating that

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

I've changed everything I could. I have searched every directory I could looking for any reference of my old username and can't find anything. I have repeated the SSH key generation process at least 3 times with no luck. Why does it keep bringing up my old username?

So my question, does Windows have some type of caching system for ssh keys? Even though I am explicitly loading my new key, it keeps bringing up reference to my old user name. The only thing I can think is that my ssh agent isn't using my new key, and then when it attempts to connect to github, it sees the old key and associates it with my old username. But again, it doens't make sense due to the fact that I deleted the old key from my old GitHub account...

I'm about to kill Git..

Answer Source

I think the key here is that you might be using HTTPS to clone the new repository which in turn does not use the SSH keys at all for authentication.

I suspect that your credentials are being cached by the credentials helper. See this:


On windows, if you've used the wincred helper (git config --global credential.helper wincred), then this stores your credentials in the Windows credential store which has a Control Panel interface where you can delete or edit your stored credentials. See this for instance:

enter image description here

With this store, your details are secured by your Windows login and can persist over multiple sessions. This was added in Git for Windows

So either:

  1. Try clearing the credential cache for your https cloned repo using the following and try again:

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


  1. Edit the credentials using the Windows control panel's Credential Manager.

And then try pushing to your HTTPS-cloned repository again when you should get prompted for authentication details again.