# Why git can't remember my passphrase under Windows

I have just start using git and i can’t get it to remember my passphrase I’m using cmd.exe elevated and my git host is github and i have create a ssh key like that guide on github

but i still get

*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':


• Is .git folder crossplatform?
• Export the changed files from visual svn on current commit visual svn server on windows (powershell script)
• Git submodule mess: how to use git submodules with developers not familar with git?
• How do I resolve SVN error “E200030: There are unfinished transactions detected in '<CHECKOUT_DIRECTORY>'”?
• Git Windows Command Prompt gets stuck during Git commands with (END)
• Git colors don't display in Windows command prompt
• Command line Git doesn't recognize keys generated using GitHub for Windows
• msys git and long paths
• ### 9 Solutions collect form web for “Why git can't remember my passphrase under Windows”

I realize that this question is coming up on two years old, but I had the same issue and several answers here did not completely answer the question for me. Here is two step-by-step solutions, depending on whether you use TortoiseGit in addition to msysgit or not.

First solution Assumes Windows, msysgit, and PuTTY.

1. Install msysgit and PuTTY as instructed.
2. (Optional) Add PuTTY to your path. (If you do not do this, then any references to PuTTY commands below must be prefixed with the full path to the appropriate executable.)
3. If you have not done so already, then generate a key hash as instructed at GitHub or as instructed by your Git host.
4. Again, if you have not already done so, convert your key for use with PuTTY’s pageant.exe using puttygen.exe. Instructions are in PuTTY’s documentation, in this helpful guide, and several other places in cyberspace.
6. Access Windows’ environment variables dialog (Right-click on “Computer”, Click on “Properties”, Click on “Advanced system settings” or the “Advanced” tab, click on “Environment Variables”). Add the following environment variable:

Replace “C:\full\path\to” with the full installation path to PuTTY, where plink.exe is found. It is probably best to add it to the “User variables” section. Also, make sure that the path you use to plink.exe matches the path you use for Pageant (pageant.exe). In some cases you may have several installations of PuTTY because it might be installed along with other applications. Using plink.exe from one installation and pageant.exe from another will likely cause you trouble.

7. Open a command prompt.

8. If you are trying to connect to a git repository hosted at Github.com then run the following command:

If the git repository you are trying to connect to is hosted somewhere else, then replace git@github.com with an appropriate user name and URL. (Assuming Github) You should be informed that the server’s host key is not cached, and asked if you trust it. Answer with a y. This will add the server’s host key to PuTTY’s list of known hosts. Without this step git commands will not work properly. After hitting enter, Github informs you that Github does not provide shell access. That’s fine…we don’t need it. (If you are connecting to some other host, and it gives you shell access, it is probably best to terminate the link without doing anything else.)

9. All done! Git commands should now work from the command line. You may want to have pageant.exe load your .ppk file automatically at boot time, depending on how often you’ll be needing it.

Second solution Assumes Windows, msysgit, and TortoiseGit.

TortoiseGit comes with PuTTY executables, and a specially modified version of plink (called TortoisePlink.exe) that will make things easier.

1. Install msysgit and TortoiseGit as instructed.
2. If you have not done so already, then generate a key hash as instructed at GitHub or as instructed by your Git host.
3. Again, if you have not already done so, convert your key for use with TortoiseGit’s pageant.exe using TortoiseGit’s puttygen.exe. Instructions are in PuTTY’s documentation, in the helpful guide linked to in the first solution, and several other places in cyberspace.
5. Access Windows’ environment variables dialog (Right-click on “Computer”, Click on “Properties”, Click on “Advanced system settings” or the “Advanced” tab, click on “Environment Variables”). Add the following environment variable:

Replace “C:\full\path\to” with the full installation path to TortoiseGit, where TortoisePlink.exe is found. It is probably best to add it to the “User variables” section. Also, make sure that the path you use to TortoisePlink.exe matches the path you use for Pageant (pageant.exe). In some cases you may have several installations of PuTTY because it might be installed along with other applications. Using TortoisePlink.exe from the TortoiseGit installation and pageant.exe from another installation of a different application (or from a standalone PuTTY installation) will likely cause you trouble.

6. All done! Git commands should now work from the command line. The first time you try to connect to your git repository you will probably be informed that the server’s host key is not cached, and asks if you trust the server. Click on “Yes”. (This is TortoisePlink.exe in action.)

You may want to have pageant.exe load your .ppk file automatically at boot time, depending on how often you’ll be needing it.

Third solution Assumes Window, msysgit, and native command prompt.

1. Install msysgit
2. Make sure to allow git to be used on the MS-DOS command prompt
3. Run start-ssh-agent
4. Enter SSH passphrases
5. All done! Git commands should now work in the native command prompt.

http://help.github.com/working-with-key-passphrases/

That’s not git, it’s ssh.

I don’t do windows, but ssh has an agent concept that can remember passphrases for you. OS X has this enabled by default. Your ssh client probably has a way to configure this.

One extra solution 5 years, 8 months and 6 days after the question was posted wouldn’t be a bad idea so here goes.

NOTE: Assumes you are using a windows computer.

2. Run it! If you have GIT in your PATH environment variable, it should just work. If you don’t, run git-credential-winstore -i C:\Path\To\Git.exe.

The next time you attempt to commit to a repository, you’ll be prompted to enter your credentials. That should be it. You will not be asked for your credentials any longer until you change your password.

Just for your knowledge… Your credentials are stored in the Windows Credential Store

Where are you storing my credentials?

This app just uses the existing Windows Credential Store to hold your credentials. You can see the stored credentials by going to Control Panel > User Accounts > Credential Manager and choosing “Windows Credentials”. The entries starting “git:” are from git-credential-winstore.

[edit – misread the question, this is an answer to a related problem. leaving rephrased version for posterity]

My case was that I was trying to push to a repo that was hosted on one of our servers. Whenever I tried to do a push, git would ask me for my password (nb – password, not the passphrase to my private key).

By adding my public key to the authorised keys on the server, I was able to get password-free pushes to that server. And, because there was no passphrase on my private key (which is bad practice btw!) I didn’t need to type anything at all in.

Here’s the command to add your public key to a server. It assumes the user git is the user on the server.

cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys'


You could achieve the same thing by logging onto the server, and manually appending your public key to the file at ~/.ssh/authorized_keys

If you set a password for your key file, you’ll always need to type in that password when connecting. If you create a passwordless key, then you won’t have to type it every time, however, anyone with access to your key file can now connect to your github account.

ssh-agent may also work. Try running that and see if it will remember your passphrase.

There is a much simpler solution to this problem if you don’t mind having you password stored in plaintext and you’re using TortoiseGit.

Simply create a _netrc file in your user profile directory – ie in Windows 7 it would be C:\Users\MyName\_netrc. This file will store your login information in this format:

machine bitbucket.org login thisismyname password p455w0rD

ssh-add -k ~/.ssh/id_rsa