Назад | Перейти на главную страницу

Ключ хоста SSH изменен - ​​но на самом деле он не изменился

Я только что попытался подключиться по SSH к серверу, который я делал без проблем некоторое время, и получил предупреждение о том, что ключ хоста сервера изменился.

Но это не так!

На сервере я проверил ключ хостов, на который есть ссылка в /etc/ssh/sshd_config, и это не изменилось.

На клиенте проверил known_hosts файл, и существующая запись в нем имеет правильный открытый ключ. Я попытался временно переместить файл known_hosts и установить StrictHostKeyChecking к no в /etc/ssh/ssh_config чтобы он автоматически подключился, чтобы я мог сравнить открытый ключ. Когда я сделал это и проверил новую запись в known_hosts, часть открытого ключа идентична предыдущей!

Так почему бы ему не подключиться? Единственное, что отличается в known_hosts это соль и хэш имени хоста. Но поскольку я и всегда подключаюсь через IP и порт, без использования имени хоста, они, безусловно, должны быть правильными.

Любые идеи?

Обратите внимание, что это сообщение получают все клиенты, которые пытались подключиться, которые ранее подключались. Так что это не проблема с клиентом.

РЕДАКТИРОВАТЬ: я должен добавить, что когда я подключился к StrictHostKeyChecking установлен в no и это создало новый known_hosts файл, когда я снова попытался подключиться, используя новый known_hosts файл и StrictHostKeyChecking вернуться к yes, он подключился без предупреждения. Другими словами, новый known_hosts файл работал без предупреждения, а старый - нет, несмотря на то, что внутри был тот же открытый ключ.

Вы не должны вообще отключать проверку ключа хоста для этого теста. Когда появляется сообщение об ошибке о конфликте, оно печатает отпечаток пальца и, как говорит Дэвид, сообщает вам, какая запись в файле known_hosts не совпадает.

Вы можете сравнить отпечаток пальца с ключом хоста; Я не знаю наверняка, но поиск в Интернете вам скажет.

Что-то вроде ssh-keygen -l -f server-public-key.txt [linuxforms] сделает это.

Кроме того, использование ssh -vv и проверка /var/log/auth.log (или аналогичного) должны рассказать вам больше о проблеме.