Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

This question is similar to SSH public key authentication - can one public key be used for multiple users? but it's the other way around.

I'm experimenting on using ssh so any ssh server would work for your answers.

Can I have multiple public keys link to the same user? What are the benefits of doing so? Also, can different home directories be set for different keys used (all of which link to the same user)?

Please let me know if I'm unclear.

Thanks.

share|improve this question

2 Answers 2

up vote 14 down vote accepted

You can have as many keys as you desire. It's good practice to use separate private/public key sets for different realms anyway, like one set for your personal use, one for your work, etc.

First, generate two separate keypairs, one for home and one for work:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

Next, add an entry to your ~/.ssh/config file to pick the key to use based on the server you connect to:

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

Next, append the contents of your id_rsa.work.pub into ~/.ssh/authorized_keys on the work machine, and do the same for the home key on your home machine.

Then when you connect to the home sever you use one of the keys, and the work server you use another.

Note you probably want to add both keys to your ssh-agent so you don't have to type your passphrase all the time.

share|improve this answer
    
This would work even if id_rsa.work.pub and id_rsa.home.pub were planted on the same server right? The reason is I might be connecting to a server from different computers, so I'm wondering if it makes sense to have different keypairs for each computer even if they're connecting to the server as the same user. Thanks. –  Russell Jan 12 '11 at 21:48
    
Absolutely! On the server side, ssh will check all the public keys in the authorized_keys file until it finds a match. So you can put all the keys in the same authorized_keys file on the server no problem. –  Phil Hollenback Jan 12 '11 at 21:54
    
Thanks so much. Things seem clear now! –  Russell Jan 12 '11 at 22:09

It makes lots of sense to have multiple users' keys going to one user. Common reasons are:

  • backup
  • git (e.g. Push URL: git+ssh://git@git-server/~/repos/MyProject)
  • rsync
  • common access to an app

As far as having different homedirs, you can change them per key by prepending environment="HOME=/home/user1" for user1's key in the authorized_keys file. See man authorized_keys.

Try it out, YMMV.

share|improve this answer
    
Great, thanks a lot! –  Russell Jan 12 '11 at 22:10

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.