Reputation: 5877
I recently created a second key to access Visual Studio Team Services,
ssh-keygen -t rsa -b 4096 -C "[email protected]"
so I now have two keys:
id_github
id_vsts
Both keys seem to have been picked up by ssh: ssh-add -l
lists both of them.
Next, I added id_vsts.pub
to my VSTS account security. The key was properly added because requesting SSH terminal access authenticates properly:
Authentication for user with identifier "" was successful against account "my_account".
Shell is not supported.
However, when I git clone ssh://[user]@[host]:22/[repo]
, it fails!
Your Git command did not succeed.
Details:
Public key authentication failed.
In an unexpected turn of events, if I use id_github
's public key, the clone succeeds. What's going on?
Upvotes: 8
Views: 11921
Reputation: 11
Apparently git uses only the first key provided, if that fails, git clone fails. My ssh config had a wildcard option with a key matching before the git key and therefore it did not work. After moving the git configuration to the top of .sss/config all is fine.
Upvotes: 1
Reputation: 395
In my case, adding IdentitiesOnly yes
to the ~/.ssh/config
file for the VSO host did the trick.
Upvotes: 13
Reputation: 33738
You need to force the client to use specific private key, otherwise it uses the default one.
To check which private key file used for a host, you can run
ssh -v [host(e.g. [email protected])]
One way is that you can configure it in the config file. (My steps for windows)
touch .ssh/config
if there isn’t config file in .ssh foldercode:
Host xx.visualstudio.com
IdentityFile /c/Users/xx/.ssh/id_vsts
Git clone
commandAnother way is that, you can run ssh -i /path/to/id_rsa [email protected]
command.
More information, you can refer to this article: Force SSH Client To Use Given Private Key (identity file)
Upvotes: 6