В процессе работы необходимо подключаться к большому множеству систем по протоколу SSH. Ваша машина является клиентом и записывает полученные ключи от удалённых машин в файл known_hosts. Эти ключи необходимы для того что бы быть уверенным при последующем подключении что это та же система. Это важно, поскольку удалённый хост могут подменить, а при подключении Вы любезно предоставите свой логин и пароль злоумышленникам.
В вот в случае если удалённый сервер был "официально" заменён на другой, но выполняет ту же роль. Например переустановили операционную систему. В таком случае встаёт проблема: файл known_hosts на Вашей машине содержит ключи от пары сотен машин, в том числе старый ключ от хоста куда Вы хотите подключиться, и Вы каждый раз получаете алерт. В такой ситуации необходимо удалить весь файл known_hosts или же в ручную найти устаревший ключ. В условиях сотен ключей процедура довольно трудоёмкая.
Но существует скрипт, который поможет выйти из этой ситуации. Скрипт выполнит поиск в known_hosts старый ключ хоста и удалит запись о нём и его IP-адресах, сохранив при том остальные записи.
#!/bin/bash
host="$1"
[[ $# -eq 0 ]] && { echo "Использование: $0 имя.хоста"; exit 1;}
ips=$(host "$host" | awk -F'address' '{ print $2}' | sed -e 's/^ //g')
ssh-keygen -R "$host"
for i in $ips
do
ssh-keygen -R "$i"
done
Создаём в текстовом редакторе новый документ, вставляем код, сохраняем с именем "name.sh". Сохраняем, даём права на выполнение. Запускаем с параметром: "name.sh имя_хоста_для_удаления".
