Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Along the lines of Tell git which private key to use I would like to use a specific ssh key in a given situation.

My problem is that even when I specify '-i something' ssh uses the keys from my ssh-agent in the order they are added.

My specific situation:

  • I have two github users, each with their own key I would like to - for example via a ssh-config - for each clone specify which key to use:

    Host USER1.git

    Hostname github.com

    User git

    IdentityFile ~/.ssh/USER1.id_rsa

ssh -vt USER1.git

will still use USER2.id_rsa if that is the key first added to ssh-agent.

share|improve this question

I finally got it to work:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • Indentation counts.
  • Do ssh-add -l and make sure both of your keys have been added.
    • Copy/paste each path from ssh-add -l into the appropriate line in ~/.ssh/config to avoid typos. If there is a ~/.ssh/config identityfile path typo for USER1, then the wrong key (USER2's key) will be used instead.

I got the instructions over at BitBucket. They should work for GitHub since the only difference is HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

To get this to work on a remote server using agent forwarding, try @stijn-hoop's suggestion below (in the comments section of this answer).

share|improve this answer
1  
For your last comment re agent forwarding, see this answer: superuser.com/questions/273037/… – Stijn Hoop Feb 20 '13 at 14:19
    
Cool. Thanks very much. – dgo.a Feb 26 '13 at 7:30

Use IdentitiesOnly yes below these hosts, in .ssh/config.

share|improve this answer
    
but then it will not use the agent and force me to enter passphrase for all github connections – svrist Nov 18 '11 at 8:01
1  
Yes, this is how it works. You can't choose between different keys when using ssh-agent. One way is to start multiple ssh-agents and switch between them either using different wrappers for different github operations or just switching between ssh-agents (changing SSH_AUTH_SOCK) – Cougar Nov 18 '11 at 17:41
3  
The comment above is incorrect -- you CAN choose identities from your ssh-agent. See also the answer I already mentioned above, superuser.com/questions/273037/… – Stijn Hoop Feb 20 '13 at 14:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .