Configuring GitBash on Windows 7: ssh failing, I&#

2019-05-21 12:04发布

问题:

I'm going nuts just trying to ssh to github.

I'm on windows 7.

Honest to Murgatroyd I've been scanning google and forums all day about this without breaking through.

In my latest attempt I've put a config file in C:\Users\myname.ssh. The results are a bit closer to happiness but still not there.

my config simply says:

Host github.com
    IdentityFile ~/.ssh/id_rsa

The command ssh -vT git@github.com produces:

OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Users/myname/.ssh/config
debug1: Applying options for github.com
debug1: Connecting to github.com [192.30.252.130] port 22.
debug1: Connection established.
debug1: identity file /c/Users/myname/.ssh/id_rsa type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1+github5
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1+github5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/myname/.ssh/known_hosts:2
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: Offering public key: /c/Users/myname/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

The top of the output looks like my key is being found and used, and the bottom like it isn't.

I'm pretty baffled.

ANY advice would be deeply appreciated.

Thanks for reading.

回答1:

As I mention in "SSH error on push to an existing project Permission denied (publickey)", double-check:

  • your %HOME% environment variable (should be set to %USERPROFILE%)
  • your full (Windows) path in your %HOME%\.ssh\config file ('~' doesn't mean much for Windows).
    For instance:

    Host gitlab.com
      HostName gitlab.com
      IdentityFile C:\path\to\.ssh\gitlab_rsa
      IdentitiesOnly yes
    

Note that you don't need a config file if you are using the default names id_rsa and id_rsa.pub for your private and public keys.



回答2:

I'm kind of guessing here what can possibly go wrong in your case, but among other things to look at, try checking the file mode for the private key and the public key files. It normally should be 600 for a private key (so, only writeable and readable by a file owner, hopefully you - point to check as well), and 644 for a public key file (same, plus readable by all others):

$ ll ~/.ssh
-rw------- 1 YOU   YOU   1.8K Sep  5 23:53 id_rsa
-rw-r--r-- 1 YOU   YOU    398 Sep  5 23:53 id_rsa.pub

If not, try following from a Git Bash:

chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

As you're on Windows, these commands may have a chance to fail when executed from a Git Bash - because when running it, curiously enough, you don't have enough premissions to modify the file mode (yet). If this is the case, try modifying file access permissions via a standard "File Properties" menu first, and set them to allow "Full Control" by all users. Once done - try modifying file mode again from a Git Bash - should work now. Alternatively you can try running Git Bash as an Administrator, but I never tried this and not sure of the final result.

Speaking of access permissions, final resort is to also double-check the permissions and the owner for a ~/.ssh directory :)



回答3:

It turns out -- very weirdly -- that ssh-keygen, under Windows 7, does NOT generate good usable key pairs every time.

I repeated the generate-upload-then-test cycle a few times -- out of sheer desperation -- and the problem simply went away by itself.

Very weird.



标签: windows git ssh