Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

My GIT setup runs fine in Linux, but when I try to set things up under Windows (using Git for Windows and TortoiseGit), I don't know where to put my private ssh key (or, better still, how to tell ssh where it's located). I'm using the standard ssh.exe option during installation of Git for Windows. The setup runs fine if I allow password authentication (in lieu of rsa) on the server.

share|improve this question
    
I have the same problem, I can ssh into my dev box using a public key as "root" using the "Git Bash" program that is installed with "Git For Windows" but I can't log in as "git" with my key even though I have copied my "authorized_keys" file from my "root" to my "git" user and set the owners and permissions correctly. Why can't I login as "git" when "root" works with the exact same "authorized_keys" file. Instead for "git" it passes up all the private keys, which are the exact same that work with "root" and asks for a password. This is a Centos 5.5 server by the way. –  Jarrod Roberson Nov 5 '10 at 1:36
    
@fuzzy lollipop: Do you have the right permissions on your git user's authorized_keys file? It should be chmod 600, and should be owned by the git user. If it's owned by the root user, it wont work –  Dan McClain Nov 5 '10 at 17:20
    
yes all the files and directories are the correct owners and permissions –  Jarrod Roberson Nov 6 '10 at 7:21
add comment

13 Answers

up vote 136 down vote accepted
+25

For Git Bash

If you are running msysgit (I am assuming you are) and are looking to run Git Bash (I recommend it over TortoiseGit, but I lean to the CLI more than GUI now), you need to figure out what your home directory is for Git Bash by starting it then type pwd (On Win7, it will be something like C:\Users\phsr I think). While you're in git bash, you should mkdir .ssh.

After you have the home directory, and a .ssh folder under that, you want to open PuTTYgen and open the key (.ppk file) you have previously created. Once your key is open, you want to select Conversions -> Export OpenSSH key and save it to HOME\.ssh\id_rsa. After you have the key at that location, Git bash will recognize the key and use it

For TortoiseGit

When using TortoiseGit, you need to set the SSH key via pacey's directions. You need to do that for every repository you are using TortoiseGit with

share|improve this answer
1  
pacey's instructions for tortoisegit won't work until you have the repository (because the 'remote' configuration setting doesn't appear unless you act on a repo), and you probably can't get the repository in the first place if you can't authenticate yourself in order to clone from the origin. Tricky! –  Kylotan Oct 6 '11 at 19:59
14  
With GitBash I found I had to copy my ~/.ssh/id_rsa file to Program Files\Git\.ssh\id_rsa - which was a little confusing, but now IntelliJ and Windows cmd can push to git repositories that use key authentication. –  JP. May 23 '12 at 12:17
4  
Likewise. I just installed git-for-windows, I am running it from cmd.exe. I needed to put the files id_rsa and id_rsa.pub into c:\program files (x86)\Git\.ssh . The .ssh dir was already present. Thanks, JP. –  Cheeso Jul 26 '12 at 1:07
2  
Second paragraph was golden. :) –  Bjørn Aug 31 '12 at 10:51
1  
@Damon: It should be id_rsa without the extension. That is the file name, it is not a directory –  Dan McClain Nov 27 '12 at 13:26
show 5 more comments

Using the built-in SSH client shipped with Git for windows, you need to setup the HOME environment variable so that the Git SSH client can find the key.

For example, on a Windows Vista installation, this would be done by issuing setx HOME c:\Users\admin\ on the command line.

Made my day and fixed the issue with Git provided that your private key is not password protected. If you want to use ssh-agent, then you can probably run ssh-agent cmd.exe (although I've never done that) and the ssh-add as usual.

Note that all Git/SSH tools are supposed to be run from a cmd.exe in order not to blink a window.

If this does not work correctly, using plink can probably be achieved by tweaking GIT_SSH. Refer to all the svn+ssh tutorials, this is basically the same plumbing you need to setup.

share|improve this answer
4  
This is what I was looking for since I'm trying to use the Windows command prompt, not git bash. –  John Ruiz Mar 5 '12 at 18:33
    
Nice, easy fix but it would have been hard to figure out without this! –  thaddeusmt Apr 13 '12 at 20:39
    
Important is as well to have no blanks between HOME = and c:\... Oct's solution did the trick for me. :-) –  Lutz Apr 21 '12 at 23:09
    
Worth noting - if you have spaces in your home (if you are using win XP/server 2003 you will), then you should prefix the path with a single quote. Bizarrely - if you end it with a quote that will be in the variable... –  Danny Staple Apr 16 '13 at 10:57
    
The setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` instead. –  trejder Dec 12 '13 at 8:01
add comment

None of the answers above worked for me. Here was what worked for me in the end. It is actually fairly simple, if you know what to type. It doesn't need putty.

  • open a git bash prompt
  • type 'ssh-keygen'
    • accept the default location
    • choose a blank passphrase (so just press 'enter' to all questions')
  • now copy to your server, eg: scp ~/.ssh/id_rsa.pub someuser@someserver.com:~

That's the bit on your own computer done. Now ssh into the destination server, then do

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

That's it! You're done! From git bash, do the following to test:

ssh someuser@someserver.com ls

If it lists the files in your home directory on the git server, then you're done!

Edit: for github, you dont have shell access to their server, but you can upload the key using their website, so for the bit 'now copy to your server', do:

  • in git bash, type 'cat ~/.ssh/id_rsa.pub', select the result, and copy it to the clipboard
  • In github website, go to 'account settings', 'ssh keys', click 'add ssh key', and paste the key
share|improve this answer
    
Me too, other answers made git ask me for key passphrase. –  Zlatko Oct 12 '12 at 6:47
    
Excellent answer ;) –  ing0 Nov 29 '12 at 9:49
2  
Don't create keys without passphrases. It's like putting your password in a text file, except that everyone knows the default location for private keys. –  GregB Apr 11 '13 at 6:10
2  
You're answering the wrong question. The Q is how to point to an existing private key. –  Scandalon Apr 17 '13 at 18:18
2  
@GregB, I look at it like this: any server for which I create a password-less key is as secure as my laptop, it's an extension of the security perimeter of my laptop. Actually, not even, since my home directory is encrypted ;-) So, it's as secure as the encrypted home partition on my laptop, which is 'good enough' for securing access to github, in my opinion. (which may vary from your opinion of course!) –  Hugh Perkins Jun 21 '13 at 5:38
show 3 more comments

You can specify the Key Location for Tortoisegit the following way:

  • Open an Explorer Window.
  • Open the Contextmenu and Navigate TortoiseGit > Settings
  • In the now opened window Navigate to Git > Remote
  • Set the Path to your Putty Key in the corresponding Input Box.

Screen shoot below:

enter image description here

share|improve this answer
    
There is no screenshot :( –  AntonioCS Feb 19 '12 at 23:05
    
This is the correct url: dbanck.de/static/images/091008_10_full.png –  dbanck Feb 27 '12 at 15:23
    
Additionally if you need to convert your private key into '.ppk' format from other format you can follow THIS –  HeartBeat Dec 18 '13 at 11:04
add comment

If you're using msysgit with the OpenSSH tools, you need to either create ~/.ssh/id_rsa, or create a git config in ~/.ssh/config which points to your key.

Here's an example of a Git config for bitbucket that will use the correct username, and a key other than the default key (in case you maintain one key for SSH connections, and another for git accounts).

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Once in git bash, you can run two commands to add your key to your current session's ssh-agent to avoid having to repeatedly type the key's password.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
share|improve this answer
    
I did this but for github.com: Host github.com IdentityFile ~/.ssh/github_rsa –  Sarah Vessels Jun 22 '13 at 18:28
add comment

Your private key needs to be added to the SSH agent on your workstation. How you achieve this may depend on what git client you are using, however puTTY and its associated agent (pagent) might do the trick for you

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

share|improve this answer
    
I stated above that I'm using Git for Windows and am using ssh.exe (packaged w/ git) in lieu of putty. There must be some standard practice for adding a private key, I just can't seem to find out how. While switching software may indeed allow me to log in, there has to be a way to do it with the standard Git setup, no? –  binaryorganic Oct 25 '10 at 21:32
    
Sorry i dont work on windows, only linux. But the key does have to be in your SSH agent. is there an agent.exe or something along those lines? –  Declan Shanaghy Oct 25 '10 at 22:01
    
Yeah, setup was cake on the linux side. But I've got to have it working on Windows too unfortunately. There are several ssh-related executable files in the git/bin folder on the Windows box (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), but I don't know how to make any of them do anything. They just blink a cmd window open and close right away. I'm stumped. –  binaryorganic Oct 26 '10 at 1:13
2  
Pageant does indeed solve the problem for me -- I have a shortcut in my Start Menu's Startup folder (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) pointing to "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", so that it loads my SSH keys on startup and this makes GIT "just work" :o) –  Owen Blacker Jun 27 '12 at 12:51
    
@OwenBlacker OMFG! You definitely should write this comment as a full-size answer! This is the only solution here, that actually helped me and solved my problem! Pity, that I can give you only +1! :] –  trejder Dec 12 '13 at 9:01
add comment

I just set %HOME%=%HOMEPATH%

This has the advantage of working for all users logged into the system (they each get separate .ssh folders).

In Vista:

  1. Right-click on Computer
  2. Choose Properties
  3. Click on Advanced System Settings
  4. Click on Environment Variables
  5. In the bottom section (System Variables) Click on New
  6. For Variable name type: HOME
  7. For Variable path type: %HOMEPATH%
  8. Click OK
share|improve this answer
    
In my case I've added HOME = %USERPROFILE% –  igor Oct 14 '13 at 11:41
add comment

The following answer also applies to this question when running ssh from Windows Service Account: Jenkins (Windows Service) with Git over SSH

share|improve this answer
    
Following the link you provided I was able to get my Jenkins setup. I needed to set the HOME environment variable to the Git program path which held the .ssh directory I created my SSH key in. –  Spechal Sep 3 '13 at 18:52
add comment

The problem was that the gitorious process was owned by root:root and not the git:git process, so it was not inheriting the in-correct permissions for the gitorious process it self and it could not find the repositories. Once I set all the gitorious related scripts in /etc/init.d to be owned by git:git I got a better error message and was able to proceed.

share|improve this answer
add comment

I originally posted this as a comment, but someone suggested I should post it as a proper answer.

Pageant (an SSH agent supplied with the PuTTY bundle) solves the problem for me.

I have a shortcut in my Start Menu's Startup folder (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) pointing to "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", so that it loads my SSH keys on startup and this makes GIT "just work" :o)

share|improve this answer
add comment

Reading your comment to Declan's answer, try opening a command prompt first (Start -> Run -> cmd) and then navigate to that git/bin folder and run ssh-keygen. Theoretically that will generate an RSA key and place it in the appropriate directory. Then you just gotta find it and share your public key with the world.

The reason that the window "blinks" is because windows run's the program, and when it executes, it closes the command prompt, thinking you're done with it, when you really need the output.

Hope that helps!

share|improve this answer
add comment

I had similar issues and none of the answers here solved the problem. Turns out, my key pair were originally generated with an empty passphrase. (I know, dumb)

Once I created a new keypair and uploaded the public key to github, things started working again.

share|improve this answer
add comment

You can specify both path to key and name of key file like so (on ubuntu). For example:

ssh -i /home/joe/.ssh/eui_rsa
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.