David Georg Reichelt
David Georg Reichelt

Reputation: 1003

Connect to github with ssh using windows

I am currently trying to use git on windows using ssh. I generated a key (with ssh-keygen -t rsa) and added the public key to github. Unfortunately, everytime I connect the following appears:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'C:\\Users\\DaGeRe\\.ssh\\id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: C:\\Users\\DaGeRe\\.ssh\\id_rsa
Enter passphrase for C:\Users\DaGeRe\.ssh\id_rsa:

So, to get this working, I've done chmod 700 (like recommended in endless posts, for example SSH Private Key Permissions using Git GUI or ssh-keygen are too open ), and ls returns the following:

-rw-r--r--    1 DaGeRe   mkpasswd      951 May 20 10:59 id_rsa
-rw-r--r--    1 DaGeRe   mkpasswd      239 May 20 10:59 id_rsa.pub

But unfortunately, ssh-add C:\Users\DaGeRe.ssh\id_rsa or ssh -T [email protected] stillreturns the error. The chmod command does not seem to work, even chmod -c 700 id_rsa (like said here: https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected) does not change anything.

Trying to remove all rights with windows (by the menues in settings) also does not work. After adding the User "Everyone" (German: "Jeder", the user may be called different in english windows) in Properties -> Safety (also translated by me from "Eigenschaften -> Sicherheit") and rejecting any access for him, the warning disappears.

With the first, empty passphrase-key, the following output came out of ssh-add:

C:\Users\DaGeRe\.ssh>ssh-add id_rsa
Enter passphrase for id_rsa:

And after this, nothing is displayed. But ssh-add -l also returns nothing:

C:\Users\DaGeRe\.ssh>ssh-add -l
The agent has no identities.

If I add an passphrase, it always says the passphrase is wrong, with the wrong rights (so the message from the beginning appears) and with the right rights (so no error appears, but it still says that the right phrase is wrong).

I am using OpenSSH 3.8.1 for windows and I don't have cygwin installed.

So somehow it seems to not be added, even if the rights are set correct. I'd be glad if anyone had an hint how to solve this problem.

This is the output of ssh -vT [email protected]

OpenSSH_3.8.1p1, OpenSSL 0.9.7d 17 Mar 2004                               
debug1: Reading configuration data /cygdrive/c/Users/DaGeRe/.ssh/config   
debug1: Applying options for github.com                                   
debug1: Reading configuration data /etc/ssh_config                        
debug1: Connecting to github.com [192.30.252.130] port 22.                
debug1: Connection established.                                           
debug1: identity file "/cygdrive/c/Users/DaGeRe/.ssh/id_rsa" type -1      
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0 
debug1: no match: libssh-0.6.0                                            
debug1: Enabling compatibility mode for protocol 2.0                      
debug1: Local version string SSH-2.0-OpenSSH_3.8.1p1                      
debug1: SSH2_MSG_KEXINIT sent                                             
debug1: SSH2_MSG_KEXINIT received                                         
debug1: kex: server->client aes128-cbc hmac-sha1 none                     
debug1: kex: client->server aes128-cbc hmac-sha1 none                     
debug1: sending SSH2_MSG_KEXDH_INIT                                       
debug1: expecting SSH2_MSG_KEXDH_REPLY                                    
debug1: Host 'github.com' is known and matches the RSA host key.          
debug1: Found key in /cygdrive/c/Users/DaGeRe/.ssh/known_hosts:1          
debug1: ssh_rsa_verify: signature correct                                 
debug1: SSH2_MSG_NEWKEYS sent                                             
debug1: expecting SSH2_MSG_NEWKEYS                                        
debug1: SSH2_MSG_NEWKEYS received                                         
debug1: SSH2_MSG_SERVICE_REQUEST sent                                     
debug1: SSH2_MSG_SERVICE_ACCEPT received                                  
debug1: Authentications that can continue: publickey                      
debug1: Next authentication method: publickey                             
debug1: Trying private key: "/cygdrive/c/Users/DaGeRe/.ssh/id_rsa"        
debug1: No more authentication methods to try.                            
Permission denied (publickey).  

Upvotes: 2

Views: 1121

Answers (1)

David Georg Reichelt
David Georg Reichelt

Reputation: 1003

After some trying, I found a working workaround for that problem, using windows and running git: Use Putty instead of OpenSSH.

One has to set GIT_SSH to Plink (in my case SET GIT_SSH=C:\PortablePrograme\putty\PLINK.EXE) and start pagent as described here: http://guides.beanstalkapp.com/version-control/git-on-windows.html (If one has an ssh-key, that is already created and added to e.g. github, one can get this into the putty-format with conversions, instead of creating a new key).

I guess that this is only one possible solution to the problem, and I'll be glad to hear if anyone has another solution.

Upvotes: 1

Related Questions