10

I'm always running ssh with the -i parameter and it's a hassle to always type in the correct key for whatever host I'm connecting to.

Is there a config file or something (on Mac) to define which private key to use when connecting to a particular host?

11

Yes, you want to create a ~/.ssh/config file. That lets you define a shortcut name for a host, the username you want to connect as, and which key to use. Here's part of mine, with hostnames obfuscated:

Host tabs
     HostName tabs.com
     User     me
     IdentityFile       ~/.ssh/new_rsa

Host scm.company.com
     User       cap
     IdentityFile       ~/.ssh/git_rsa

Host project-staging
     HostName 50.56.101.167
     User     me
     IdentityFile       ~/.ssh/new_rsa

With this I can say, ssh tabs and get connected to host tabs.com as user me, with key new_rsa, as though I'd used ssh me@tabs.com -i ~/.ssh/new_rsa.

  • Also a good way to go if you don't want to use ssh-agent for whatever reason. – voretaq7 Apr 22 '11 at 19:28
  • I didn't know that was possible. +1 – Safado Apr 22 '11 at 19:48
2

SSH clients will typically use ~/.ssh/identity (ssh v1) or one of~/.ssh/id_rsa or ~/.ssh/id_dsa (v2) as the default private key. You can change this in ~/.ssh/config (the IdentityFile parameter - the -i option to SSH actually overrides this. See man ssh_config for details).

If you have multiple private keys to deal with using ssh-agent is probably a better choice.
See man ssh-agent for more details.

  • +1 for describing the defaults and citing the man page. – pjmorse Apr 22 '11 at 19:42
0

If you use different keys for different servers I don't think there is.

If you use a single key for all servers, just save it as ~/.ssh/id_rsa, it will be used automatically.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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