Автоматическое добавление публичного is_rsa.pub в known_hosts — как?

Автоматическое добавление публичного is_rsa.pub в known_hosts — как?

Как автоматически добавить сервер в known_hosts? (и не использовать отпечаток md5, так как я имею в виду безопасный способ, пожалуйста, не отправляйте решения «автоматически да/принять». Я хочу перенести требуемые учетные данные с сервера на машину)

Я хотел бы автоматически обновить свой known_hostsфайл SSH для приема нового сервера.

Я предполагаю, что мне нужно добавить открытый ключ сервера ( id_rsa.pubполученный через защищенный канал), но я вижу, что формат отличается (я пробовал добавлять таким образом, awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hostsно проверка не удалась. Обратите внимание, что я не хочу использовать отпечаток md5 из-за недостатков md5). Если что-то еще id_rsa.pubможет быть полезным, я могу запустить команды на сервере и получить результаты через доверенный канал. (Обратите внимание, что это не сетевой канал (представьте себе физическое перемещение флешки из одного места в другое), поэтому это ssh-keyscanне решает проблему, более того, id_rsa.pub — это ключ сервера dropbear, который не запущен на сервере, поэтому доступны только файлы с ключами, а не сервер)

решение1

Название id_rsa.pubпохоже на открытый ключ пользователя. Это не имеет ничего общего с known_hostsknown_hostsхранит ключи хоста. Ключи хоста, как следует из названия, аутентифицируют хост (т. е. компьютер), тогда как ключи пользователя аутентифицируют пользователя. Открытые ключи хоста OpenSSH обычно находятся в /etcили /etc/sshи называются примерно так ssh_host_rsa_key.pub: .

Dropbear имеет один файл, содержащий закрытый ключ. Чтобы извлечь открытый ключ (в формате, совместимом с Dropbear и OpenSSH), запустите

dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub

Я не думаю, что OpenSSH поставляется с командой для обновления known_hostsфайла. Это достаточно легко сделать вручную:

echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts

Если вы хотите хешировать имена хостов (чтобы тот, кто читает ваш known_hostsфайл, не мог узнать имена этих серверов — это очень незначительное улучшение конфиденциальности), запустите ssh-keygen -Hпосле этого.

Связанный контент