
У меня есть задание 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