109

I run git push -u origin master

It tells me that "Permission denied (public key) fatal: The remote end hung up unexpectedly"

Then I looked up on the internet and found that I had to generate an ssh key for my account on GitHub. However, upon doing so, when I tried to do ssh-keygen -t rsa "email@youremail.com" it simply said ssh-keygen is not recognized. I tried doing mkdir C:\ssh but that didn't work. If it helps I'm using Ruby Rails and I'm on a Windows computer. Could anyone help me?

culix
  • 10,188
  • 6
  • 36
  • 52
user1567909
  • 1,450
  • 2
  • 14
  • 24

14 Answers14

135

2012:
ssh-keygen.exe is part of msysgit:

 C:\path\to\msysgit1.7.11\bin\ssh-keygen.exe

if your %PATH% includes C:\path\to\msysgit1.7.11\bin\, you will have ssh-keygen.


Update 2015:
ssh-keygen.exe is part of Git For Windows, whose releases include PortableGit-2.4.3.1-2nd-release-candidate-64-bit.7z

c:\path\to\PortableGit-2.4.3.1-2nd-release-candidate-64-bit\usr\bin\ssh-keygen.exe

That means the %PATH% must include c:\path\to\PortableGit-2.4.3.1-2nd-release-candidate-64-bit\usr\bin (without the ssh-keygen.exe)

As I explained before, Git for Windows will soon phase out msysgit.
I detailed in "Why is it that if you download Git 2.0 from the net, you always get a 1.9.4 installer package?" how this new version is based on the more recent msys2 project.

Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
  • Is it safe to have `ssh-keygen.exe` in the PATH on Windows? Do I need to remove its location after that? – Green Apr 25 '13 at 20:51
  • @Green actually, it is part of the Windows `PATH` only during your session with git, since you are launching a special DOS session with `git-cmd.bat`: https://github.com/msysgit/msysgit/blob/master/git-cmd.bat. It will complete the `PATH` and set `HOME`. – VonC Apr 25 '13 at 21:14
  • Acutally, the path should be without `ssh-keygen.exe`. I mean, it works only in this way for me. – alexander Dec 01 '15 at 20:58
  • 1
    @alexander I agree, and I have edited the answer to make that more visible. – VonC Dec 01 '15 at 21:01
  • 7
    for me, path was `C:\Program Files (x86)\Git\usr\bin` – rupinderjeet Jul 08 '16 at 14:49
  • @rupinderjeet47 Yes, it is ``. I prefer using the archives unzipped where I want rather than the msi setup which installs by default in `C:\Program files\Git`. – VonC Jul 08 '16 at 14:53
65

I just had this issue and thought I'd share what I thought was an easier way around this.

Open git-bash and run the same command with the addition of -C since you're commenting in your email address: ssh-keygen -t rsa -C "email@youremail.com" command. That's it.

git-bash should have been installed when you installed git. If you can't find it you can check C:\Program Files\Git\Git Bash

The first time I did this it failed to create the .ssh folder for me so I had to open a standard Command Prompt and mkdir C:\Users\yourusername\.ssh

cjaypierson
  • 706
  • 5
  • 4
52

I followed below in windows (With Git for Windows installed)

  1. Run "Git Gui" (Start --> Git --> Git Gui)
  2. Click Help and then Show SSH Key
  3. Click Generate Key if you do not have one already

Note:- this creates the key files under your personal profile folder C:\Users\YourUserID\.ssh\

enter image description here

Dinesh Rajan
  • 2,376
  • 23
  • 19
10

No need to add anything to environmental variables! Just open up git bash and perform command the ssh-keygen in there.

Link to download git bash here

Bilton Tran
  • 386
  • 5
  • 6
9

I found an easy solution to fix this :

In the command prompt, go to your git\bin directory, and then execute your commands from here

pirgauthier
  • 91
  • 1
  • 1
8

If you have installed Git, and is installed at C:\Program Files, follow as below

  1. Go to "C:\Program Files\Git"
  2. Run git-bash.exe, this opens a new window
  3. In the new bash window, run "ssh-keygen -t rsa -C""
  4. It prompts for file in which to save key, dont input any value - just press enter
  5. Same for passphrase (twice), just press enter
  6. id_rsa and id_rsa.pub will be generated in your home folder under .ssh
user3233126
  • 81
  • 1
  • 2
4

Just go to heroku.bat and add:

@SET PATH="D:\Program Files (x86)\Git\bin";%PATH% after @SET PATH=%HEROKU_RUBY%;%PATH%

in my case it's in D:\Program Files (x86)\Git\bin, change it to the path you've installed Git to. (i just left it with my path so it will be clearer on how to write this)

Vlad
  • 735
  • 2
  • 10
  • 19
3

I think you can add the location of the file ssh-keygen.exe in the PATH environment variable. Follow the steps: Go to My Computer->Right click->Properties->Advanced System Settings->Click Environmental Variables. Now click PATH and then click EDIT. In the variable value field, go to the end and append ';C:\path\to\msysgit1.7.11\bin\ssh-keygen.exe' (without quotes)

Nehal J Wani
  • 16,071
  • 3
  • 64
  • 89
3

don't do anything just type in your command prompt

C:\> sh

then you got like this

sh-4.4$ 
# type here 
ssh-4.4$ ssh-keygen -t rsa -b 4096 -C "example@example.com"

this should must work.

Osama Saeed
  • 149
  • 8
3

For windows you can add this:

SET PATH="C:\Program Files\Git\usr\bin";%PATH%
Mike Doe
  • 16,349
  • 11
  • 65
  • 88
oumina
  • 31
  • 6
1

You probably should check this. Windows doesn't have that command built in.

Benjamin Tan Wei Hao
  • 9,621
  • 3
  • 30
  • 56
0

I got it fixed by just adding ssh-keygen to my environment variables.

0

for those who does not choose BASH HERE option. type sh in cmd then they should have ssh-keygen.exe accessible

Zeeshan Khan
  • 53
  • 1
  • 7
0

In my machine, ssh-keygen was available from powershell.

mikeLundquist
  • 769
  • 1
  • 12
  • 26