Файл known_hosts
В SSH для аутентификации компьютеров и пользователей используется криптография с открытым ключом. Ключи хоста аутентифицируют хосты. Уполномоченные ключи и ключи идентификации аутентифицируют пользователей. В OpenSSH коллекция известных ключей хостов хранится в /etc/ssh/known_hosts
и в .ssh/known_hosts
в домашнем каталоге каждого пользователя. При первом подключении к хосту ssh обычно добавляет открытый ключ удаленного хоста в файл known_hosts
пользователя.
Ключи необходимы для уверенности при последующем подключении что это та же система. Это важно, поскольку удалённый хост могут подменить, а при подключении вы любезно предоставите свой логин и пароль злоумышленникам.
В файле known_hosts
, записываются отпечатки всех серверов, которые вы посещаете и не позволяет сливать пароли и секретные ключи, если отпечаток не совпал. Она просто вас не пустит дальше, обьясняя это тем, что вас пытаются обмануть.
Удаление ключа
Для решения проблеммы, нужно стереть запись про сервер на клиенте. Эта каманда удалит данные про все сервера, а нас это не очень устраивает. Хотя если Вы работаете только с одним сервером, то почему бы и нет:
rm ~/.ssh/known_hosts
Нужно ещё добавить, что расположение файла может быть и другим, если в конфиге ssh
указано это директивой UserKnownHostsFile
.
Если же Вам нужно удалить конкретный хост, то почему бы не открыть файл в текстовом редакторе и не удалить нужную строчку. Ну что, логично и так можно сделать, если у Вас на клиенте не включена опция HashKnownHosts
. Если же она включена, то найти нужную строчку будет проблематично.
Удалить известный ключ сервера можно командой:
ssh-keygen -R server
При этом нужно удалить ещё и ключ IP, они хранятся раздельно:
ssh-keygen -R 127.0.0.1.
Эти команды удалят записи об указанном сервере и можно повторно зайти на него и подтвердить подлинность уже нового отпечатка.