Использование нескольких ssh-ключей для аутентификации на разных хостах

Тот, кто использует ssh наверняка знает о возможности безпарольной аутентификации, используя пару ключей ssh. Это очень удобно, когда пароль вводить не нужно. Но как правило пара ключей используется лишь одна, поэтому есть надобность разместить публичный ключ на всех серверах, куда нужно производить вход. Но если для некоего сервера уже есть сформированная пара ключей, то можно и использовать её для аутентификации именно на этом сервере.

Для этого размещаем приватный ключ в директории ~/.ssh/. Называем его как-то по другому (не так как предлагает ssh-keygen при создании ключей - id_rsa), например id_rsa_github_com. Теперь нужно сообщить ssh о том, что для хоста github.com нужно использовать именно этот ключ. Редактируем файл ~/.ssh/config (если его нет, то создаём), дописываем туда

Host github.com
IdentityFile ~/.ssh/id_rsa_github_com

Теперь для всех серверов будет использоваться дефолтный ключ (обычно он называется ~/.ssh/id_rsa), а именно для github.com - ~/.ssh/id_rsa_github_com.

Параноикам на заметку: можно для каждого сервера создать свою пару ключей (просто переопределив имя ключа в диалоге в ssh-keygen) и прописать конфигурацию для каждого сервера.

PS Можно использовать другой ключ без прописывания в конфиг. Для этого нужно воспользоваться параметром командной строки -i:

$ ssh -i ~/.ssh/id_rsa_github_com github.com

Ну конечно же github нас так никуда не пустит, так как не разрешает интерактивный режим. Но для своих собственных серверов это вполне можно использовать.