Как можно использовать несколько закрытых ключей с ssh?

58

Мне удалось настроить SSH для использования аутентификации с закрытым / открытым ключом. Теперь я могу сделать

ssh user@server1

И он входит в систему с закрытым ключом. Теперь я хочу подключиться к другому серверу и использовать другой ключ. Как сделать так

ssh user@server1

использует privatekey1

ssh user@server2

и использует privatekey2

Джошуа
источник
7
Никакой реальной причины - один личный мифбокс, а другой - рабочий сервер, и я не хотел использовать мой домашний ключ на работе.
Иисус Навин
ни один из ответов, похоже, не отвечает на полный вопрос, например, как создать разные ключи privatekey1 и privatekey2
jpwynn

Ответы:

49

Есть несколько вариантов.

  1. Загрузите оба ключа в ваш агент ssh, используя ssh-add. Тогда оба ключа будут доступны при подключении к обоим серверам

  2. Создайте свой $HOME/.ssh/configфайл и создайте Hostраздел для сервера server1 и еще один для сервера server2. В каждом Hostразделе добавьте IdentityFileпараметр, указывающий на соответствующий файл закрытого ключа.

Suppressingfire
источник
2
Агент ssh был отличной идеей, также, если у меня есть файлы как открытого, так и закрытого ключей, т.е. key1 и key1.pub, в ~ / .ssh он автоматически загрузит их.
Джошуа
57

Вы можете установить это в своем ~/.ssh/configфайле. У вас будет что-то вроде этого:

Host server1
IdentityFile ~/.ssh/key_file1

Host server2
IdentityFile ~/.ssh/key_file2

man ssh_config это ссылка

Рори
источник
4
Вы также можете указать Userдля каждого хоста, чтобы сократить количество нажатий клавиш. Наконец, когда вы генерируете новый ключ SSH для каждого хоста, ssh-keygenубедитесь, что вы действительно вводите альтернативный путь ключа.
Марко Чеппи
Есть ли возможность указать ключ по умолчанию, например, сказать, host x ->key1а затем остальные хостыkey2
azerafati
Да, используйте sh Host * И добавьте значения по умолчанию, после чего можно добавить переопределения. Также: В sh man_ssh_config частности, часть в разделе «Хост» в отношении звездочки '*' и восклицательного знака '!'
immeëmosol