unable to get SSH keys working between sourcetree

2019-03-12 01:49发布

问题:

I was able to create a key and connect to github following these instructions via the command prompt successfully:

https://help.github.com/articles/generating-ssh-keys

However, when I try to connect via Sourcetree and putty I cannot. I've tried:

  1. generating a new key with the putty key generator (SSH-2 RSA)
  2. entering a passphrase
  3. saving the private key
  4. saving the public key and adding a .pub extension
  5. copying/pasting the key from the putty key generator window into github
  6. attemping to refresh branches on a pull from my private github repository from my local repo using the SSH clone URL I got from github

I also tried opening the key generated from the github command line instructions and it wanted me to convert it to a putty-type key which I did and saved off, tried with that one. Also no luck.

What am I doing wrong?

回答1:

In order to get it worked I ended up going to Tools -> Options -> SSH Client and changing it to OpenSSH. I generated and uploaded several different types of keys trying to get it work as well but I think this is what finally did it.



回答2:

In my case, I needed to switch to a git or ssh based repo path rather than the https based repo path. This causes SourceTree to switch to SSH based authentication.

This setting can be found at Repository => Repository setting => Paths

Example:

Correct repo paths

git@github.com:<username>/<reponame>.git

or

ssh://git@github.com/<username>/<reponame>.git

(Note: if you are working with a repo that isn't yours, replace username with organization name)

Wrong repo path

https://github.com/<username>/<reponame>.git

HTTPS repo paths result in SourceTree trying to be extra smart and failing spectacularly. You get prompted for a username/password GUI dialog which will never work if you have 2 factor authentication enabled.



回答3:

You may want to consider switching from OpenSSH to Putty / Plink and use embedded Git instead of Git provided by host OS. Making ssh-agent work on Windows is a bit more complicated than clicking it out straight from the SourceTree and PuttyGen.

If you want to still use terminal to configure SSH and start ssh-agent please see bottom two steps.



回答4:

For Sourcetree on MacOS I had to change from OAuth to Basic authentication, use "git" as the username (not my GitHub username), and generate the SSH key and input it into GitHub. Only then could I clone a GitHub repo via SSH in Sourcetree.