Если вы используете это:
ssh -o StrictHostKeyChecking=no server.example.net
Вы можете быть в состоянии избежать вопроса в целом, но ОСТОРОЖНО, делая это, вы избегаете важной проверки, которую использует SSH для проверки личности удаленного хоста. Вы упомянули, что у вас есть отпечаток пальца RSA. Проверьте это, когда используете эту опцию.
Вы спросили, как можно "сгенерировать" запись, которую вы добавили бы в файл known_hosts. Я предполагаю, что вы используете OpenSSH.
На каждом из серверов, к которому вы подключаетесь, вам нужно узнать, где находятся SSH-ключи удаленного хоста. В Linux и FreeBSD все должно быть в /etc/ssh/
. В OSX все настройки SSH, включая ключи, находятся в /etc/
. Если вы не уверены, вы сможете найти ключи с помощью:
find /etc/ -name ssh_host\*.pub -print
Скорее всего, у вас будут такие результаты:
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_rsa_key.pub
Содержимое этих файлов на удаленных серверах можно дословно добавить в файл known_hosts, используемый вашим ssh-клиентом. И, очевидно, если вы обычно используете только один тип ключа, вам, вероятно, не нужно содержимое обоих файлов.
Другой вопрос, который вы задали, состоял в том, можно ли указать альтернативный файл known_hosts. Другой ответ на этот вопрос дает вам инструкции для этого.
Обратите внимание, что вы также можете указать альтернативный файл known_hosts, используя запись в файле ~/.ssh/config
. Например:
host cloudhost*
UserKnownHostsFile ~/.ssh/known_hosts_cloud
Это может работать для вас, если вы соберете все ключи хоста в именованный файл и будете иметь имена хостов, такие как cloudhost1, cloudhost2, ....