О чём говорит предупреждение
Сервер подтверждает свою подлинность ключом хоста. Если ключ отличается от ранее сохранённого клиентом, OpenSSH выводит REMOTE HOST IDENTIFICATION HAS CHANGED и отказывается подключаться. Клиент не может отличить безобидное изменение от атаки, поэтому считайте предупреждение неустранённым, пока не проверите его причину.
Распространённые причины
Обычные причины — переустановка сервера, восстановление или клонирование виртуальной машины из образа, назначение адреса другой машине и балансировщик нагрузки, направляющий вас на разные узлы. Злоумышленник, перехватывающий соединение, вызывает такое же предупреждение. Если вы не ожидали изменения, остановитесь и не вводите пароль.
Сравните отпечатки
Посмотрите настоящий отпечаток на сервере по каналу, который не зависит от этого SSH-соединения, например через консоль провайдера или гипервизора. Команда ssh-keyscan показывает лишь то, что предъявляется вам по сети, и сама по себе ничего не доказывает. Она полезна только для сравнения со значением из консоли.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh-keyscan -t ed25519 server.example | ssh-keygen -lf -Замените старую запись
Удаляйте старую запись и подключайтесь заново только после того, как отпечатки совпадут. Для нестандартного порта используется отдельная запись с квадратными скобками. ssh-keygen сохраняет предыдущий файл как known_hosts.old. Не отключайте StrictHostKeyChecking и не удаляйте весь файл known_hosts: это убирает защиту для всех ваших серверов.
ssh-keygen -R server.example
ssh-keygen -R '[server.example]:2222'
ssh user@server.exampleКак избежать предупреждения после переустановки
Если вы планируете переустановить сервер и хотите сохранить его идентичность, безопасно создайте резервную копию ключей хоста из /etc/ssh и восстановите их с прежними владельцем и правами. С клонами поступайте наоборот: каждой машине, созданной из одного образа, нужны собственные ключи хоста, иначе несколько серверов будут иметь одну идентичность.
Ключи хоста в CH-J Server Manager
Приложение хранит отпечатки SHA-256 ключей хоста в своём зашифрованном хранилище, отдельно от файла known_hosts клиента OpenSSH. При изменении оно блокирует соединение и показывает известный и новый отпечатки. Запись заменяется только после вашего подтверждения, а отмена ничего не меняет. В Alpha 0.1.1 проверка также охватывает каждый промежуточный хост, а выполняемая передача останавливается при изменении ключа. Приложение не может проверить новый отпечаток за вас, поэтому проверка по другому каналу остаётся вашей задачей.