Внутри скрипта bash, выполняющего ssh, автоматически добавляется хост только для определенных известных ключей RSA

Внутри скрипта bash, выполняющего ssh, автоматически добавляется хост только для определенных известных ключей RSA

У меня есть задание Chron, запускающее скрипт bash, который затем подключается по SSH к моему серверу. Но IP-адрес моего сервера время от времени меняется (мой скрипт bash умеет находить новый IP-адрес). Но проблема в том, что тогда мой скрипт bash получает предупреждение "Невозможно установить подлинность хоста...". Я не хочу использовать StrictHostKeyChecking=noиз-зачеловек посерединеатаки. Однако:

ЕслиRSA-ключидентично, например,RSA-ключуже в файле known_host, илиRSA-ключкоторый я сохранил в каком-то другом MyServersPublicKeyфайле, то я предполагаю, что это мой сервер, и у него просто новый IP-адрес.

Само предупреждение отображаетотпечаток пальцапринадлежащийRSA-ключс "неизвестного" хоста, а неRSA-ключЯ полагаю, что я мог бы сэкономитьRSA-ключ отпечаток пальцамоего хоста, а затем мой bash-скрипт используетотпечаток пальцаиз предупреждения и сравните его с сохраненнымотпечаток пальца. Но мне интересно, знает ли кто-нибудь более простой способ.

Нужно ли мне писать для этого собственный bash-скрипт или есть готовый?

решение1

Как отмечено в комментариях, создание сертификатов (подписанных ключей хоста) поможет вам решить эту проблему (см. страницу руководства для ssh-keygen, главу «Сертификаты», описывающую эту процедуру). По сути, вы создаете CA на сервере, подписываете ключи хоста и сохраняете открытый ключ CA в вашем, known_hostsнапример:

@cert-authority * ssh-rsa AAAAB5W...

Другой возможностью было бы написать какой-нибудь скрипт bash, который бы добавил ваш IP перед ключом хоста known_hosts(если у вас нет хэшированного файла). Что-то вроде этого должно сработать:

sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts

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