Просто чтобы сообщить об этом, чтобы мне не велели этого не делать:
Я делаю много переустановок на машинах, на которых меняются ключи хоста. Это требует рассмотрения ~/.ssh/known_hosts
на моей машине и сдувание старого ключа и добавление нового ключа. Это огромная боль в слизистой оболочке, поэтому я начал обдумывать способы ее автоматизации.
Я не хочу просто слепо принимать любой ключ хоста, поэтому исправление OpenSSH для игнорирования ключей хоста отсутствует. Я подумал о создании оболочки вокруг ssh
команда обнаружит ошибку, возвращающуюся из ssh
и предложить мне удалить старый ключ или выйти. Я также подумал о создании демона, который будет получать последний ключ хоста с машины из белого списка (около двадцати машин постоянно переустанавливаются) и заменять старый ключ хоста в known_hosts
.
Как бы вы автоматизировали этот процесс?
В зависимости от того, какие причины для переустановки / IP-адреса остаются неизменными, я бы посмотрел на настройку «StrictHostKeyChecking» в ~ / .ssh / config для конкретного хоста / IP-адресов / шаблонов.
Если это невозможно, посмотрите на автоматизацию загрузки ключей на хосты, возможно, в процессе переустановки.
Если вы используете систему управления конфигурацией, такую как Puppet, вы можете использовать ее, чтобы сохранить /etc/ssh/ssh_known_hosts
файл обновляется с помощью хостов, когда клиентские машины связываются с центральным сервером. Тогда вы можете включить StrictHostKeyChecking
вариант в файле конфигурации.
Именно это мы делаем с нашими инстансами Amazon EC2, которые регистрируются на нашем главном сервере Puppet. У нас есть марионеточный сервер, который служит опорой для перехода в наши экземпляры EC2 и является единственной машиной, на которой разрешено подключаться к ним по SSH. Затем мы сохраняем /etc/ssh/ssh_known_hosts
файл обновлен ключами хоста и /etc/hosts
файл для обновления общедоступного IP-адреса DNS EC2.
Вы хотите ssh-keyscan
, который распространяется с openssh. Из страница руководства:
ssh-keyscan is a utility for gathering the public ssh host keys of a num‐
ber of hosts. It was designed to aid in building and verifying
ssh_known_hosts files.
В рамках переустановки запустите ее на компьютере с актуальным списком ключей, а затем распространите обновленный файл known_hosts на остальные машины.
Или, как уже упоминалось, вы можете отключить StrictHostKeyChecking. Это делает вас уязвимым для атак типа "злоумышленник посередине", хотя в вашей среде это может не беспокоить.
Возможно, вы хотите сохранить ключи хоста перед переустановкой, а затем восстановить их.
В качестве альтернативы вы можете использовать какой-нибудь инструмент управления конфигурацией, например CFengine или Кукольный распространять авторитетный /etc/ssh/ssh_known_hosts
всем клиентам на вашем сайте. (OpenSSH консультируется /etc/ssh/ssh_known_hosts
если в ~/.ssh/known_hosts
.)