64

I was able to setup ssh to use private/public key authentication. Now I am able to do

ssh user@server1

And it logs on with the private key. Now I want to connect to another server and use a different key. How do set it up so

ssh user@server1

uses privatekey1

ssh user@server2

and uses privatekey2

2
  • 7
    No real reason - ones a personal mythbox and the other is a work server and I didn't want to use my home key at work.
    – Joshua
    Aug 12, 2010 at 11:56
  • none of the answers seem to answer the full quesiton, eg, how to create different keys privatekey1 and privatekey2
    – jpw
    Jan 27, 2016 at 18:40

3 Answers 3

62

You can set this up in your ~/.ssh/config file. You would have something like this:

Host server1
IdentityFile ~/.ssh/key_file1

Host server2
IdentityFile ~/.ssh/key_file2

man ssh_config is a reference

3
  • 5
    You can also specify User for each host to cut down on key strokes. Lastly when you're generating a new SSH key for each host with ssh-keygen make sure you actually enter an alternate key path. Aug 11, 2010 at 20:49
  • Is there an option to specify a default key, like saying host x ->key1 and then the rest of the hosts key2
    – azerafati
    Jun 19, 2017 at 14:54
  • Yes, use sh Host * And add the defaults, than overrides van be added underneath. Also: sh man_ssh_config Specifically the part in the "Host" section with regards to asterisk '*' & exclamation mark '!' Mar 19, 2018 at 13:08
52

There are a few options.

  1. Load both keys into your ssh agent using ssh-add. Then both keys will be available when connecting to both servers

  2. Create your $HOME/.ssh/config file and create a Host section for server1 and another for server2. In each Host section, add an IdentityFile option pointing to the appropriate private key file

1
  • 2
    ssh agent was a great idea, also if I have both the public and private key files, ie key1 and key1.pub, in ~/.ssh it will automatically load them.
    – Joshua
    Aug 12, 2010 at 11:58
2

Besides the (preferable) option of adding both keys in $HOME/.ssh/config (note that this requires appropriately setting attributes of $HOME/.ssh and $HOME/.ssh/config), you can use

$ ssh -i privatekey1 user@server1

e.g.

I learned this by way of solving this more complex situation: Multiple ssh access types from a given user1/client to the same user2/server

You must log in to answer this question.

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