Я получил это сообщение сегодня при попытке войти на мой сервер. Что мне делать? В чем дело?
$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
Ответы:
Вы недавно переустанавливали ОС на вашем сервере или что-то подобное? Это вызвало бы это.
Чтобы это исправить: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/
Решение № 1: Удалить ключи с помощью ssh-keygen
Используйте эту
-R
опцию, чтобы удалить все ключи, принадлежащие имени хоста, из файла known_hosts. Эта опция полезна для удаления хешированных хостов. Если ваше удаленное имя хоста - server.example.com, введите:Теперь вы можете без проблем подключиться к хосту.
Решение № 2: Добавьте правильный ключ хоста в
/home/user/.ssh/known_hosts
Нет необходимости удалять весь файл known_hosts, только строку в этом файле. Например, если у вас есть 3 сервера следующим образом.
Чтобы удалить второй сервер (myserver.com), откройте файл:
И нажмите команду dd, чтобы удалить строку. Сохраните и закройте файл. Или используйте следующее
Теперь перейдите к строке # 2, введите следующую команду
Теперь удалите строку с dd и выйдите:
Или вы можете использовать команду sed следующим образом для удаления ошибочного ключа в строке # 44:
Решение 3. Просто удалите файл known_hosts, если у вас только один ssh-сервер
Попробуйте снова
подключиться через ssh. Теперь вы можете подключиться к серверу через ssh:
Далее вы получите свежую подсказку для добавления ключа
~/.ssh/known_hosts
следующим образом:источник
Из того, что я могу сказать, все эти ответы касаются подавления предупреждения, а не борьбы с ним. Короче говоря, предупреждение говорит о том, что сервер выглядит не так, как раньше; см. https://en.wikipedia.org/wiki/Man_in_the_middle_attack, почему это может быть опасно.
Читайте
man ssh
, особенно этот раздел:Чтобы быть в безопасности, вы (или кто-то, кому вы доверяете) должны были сначала запустить эту команду на сервере, к которому вы подключаетесь. Это даст вам отпечаток пальца, похожий на тот, который указан в предупреждении в вопросе. Конечно, часто у вас нет этой информации, но если у вас есть основания подозревать, что что-то не так, запуск этой команды - это способ проверить, действительно ли сигнатура сервера действительно изменилась или что-то подозрительное происходит.
источник
ssh -o FingerprintHash=md5 example.org
Я столкнулся с той же проблемой, и если вы не хотите удалять весь
known_hosts
файл, вы можете выполнить следующую команду:ssh-keygen -R 10.10.10.69
Нет проблем с удалением known_hosts. Вам нужно будет только добавлять каждый сервер, к которому вы подключаетесь, в список каждый раз, когда вы подключаетесь к ним. Возможно, вы тоже испортите свои скрипты, потому что хостам еще не доверяют. Предупреждение появляется, когда подпись хоста (компьютер, к которому вы пытаетесь подключиться, генерирует новые ключи, обычно из-за переустановки или ротации ключей.)
источник
Если вы считаете, что предупреждение является ложным срабатыванием, вы можете удалить свой / root / ssh / known_hosts, чтобы начать новые проверки.
источник
Если вы недавно переустанавливали сервер или иным образом изменили ключ хоста, возможно, безопасно удалить строку 8 из файла ~ / .ssh / known_hosts и повторно добавить сервер (с помощью ssh и ответив «да» «когда он запрашивает ключ проверки)
источник
Поскольку ваш сервер находится в локальной сети, вы можете быть совершенно уверены.
Если вы переустановили свою систему, это нормально, но вместо удаления файла known_hosts я бы порекомендовал сделать
echo "" > ~/.ssh/known_hosts
источник
ssh -q тоже делает этот трюк.
источник
Скопируйте эту строку, но введите имя пользователя и имя хоста / IP для
user
иremote-server
:Например:
И вставьте его на свой локальный терминал и запустите. Это сработало для меня.
источник
На клиентском узле, где вы выдаете SSH,
Удалите все строки, которые начинаются с IP-адресов, которые находятся в той же сети, что и IP-адрес, на который вы пытаетесь подключиться. Это заставит клиентский узел постоянно добавлять (ECDSA) в список известных хостов.
источник