Предупреждение «Удаленная идентификация хоста изменилась» при подключении через SSH


21

Я получил это сообщение сегодня при попытке войти на мой сервер. Что мне делать? В чем дело?

$ 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.

2
Кроме того, вы можете избежать локального и удаленного входа в систему как root, и вместо этого использовать непривилегированных пользователей в сочетании с sudo.
Стив Битти

Ответы:


12

Вы недавно переустанавливали ОС на вашем сервере или что-то подобное? Это вызвало бы это.

Чтобы это исправить: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

Решение № 1: Удалить ключи с помощью ssh-keygen

Используйте эту -Rопцию, чтобы удалить все ключи, принадлежащие имени хоста, из файла known_hosts. Эта опция полезна для удаления хешированных хостов. Если ваше удаленное имя хоста - server.example.com, введите:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Теперь вы можете без проблем подключиться к хосту.

Решение № 2: Добавьте правильный ключ хоста в /home/user/.ssh/known_hosts

Нет необходимости удалять весь файл known_hosts, только строку в этом файле. Например, если у вас есть 3 сервера следующим образом.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Чтобы удалить второй сервер (myserver.com), откройте файл:

# vi +2 .ssh/known_hosts

И нажмите команду dd, чтобы удалить строку. Сохраните и закройте файл. Или используйте следующее

$ vi ~/.ssh/known_hosts

Теперь перейдите к строке # 2, введите следующую команду

:2

Теперь удалите строку с dd и выйдите:

dd
:wq

Или вы можете использовать команду sed следующим образом для удаления ошибочного ключа в строке # 44:

$ sed -i 44d ~/.ssh/known_hosts

Решение 3. Просто удалите файл known_hosts, если у вас только один ssh-сервер

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Попробуйте снова
подключиться через ssh. Теперь вы можете подключиться к серверу через ssh:

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

Далее вы получите свежую подсказку для добавления ключа ~/.ssh/known_hostsследующим образом:

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.

9
Обратите внимание, что если вы НЕ меняли ключи хоста SSH вашего сервера, вам не следует заменять копию ключа хоста, поскольку это может быть признаком того, что кто-то пытается подорвать ваши коммуникации, выполняя атаку «человек посередине».
Кис Кук

7

Из того, что я могу сказать, все эти ответы касаются подавления предупреждения, а не борьбы с ним. Короче говоря, предупреждение говорит о том, что сервер выглядит не так, как раньше; см. https://en.wikipedia.org/wiki/Man_in_the_middle_attack, почему это может быть опасно.

Читайте man ssh, особенно этот раздел:

ПРОВЕРКА ХОЗЯЙСТВЕННЫХ КЛЮЧЕЙ

При первом подключении к серверу пользователю предоставляется отпечаток открытого ключа сервера (если не был отключен параметр StrictHostKeyChecking ). Отпечатки пальцев можно определить с помощью ssh-keygen (1) :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Чтобы быть в безопасности, вы (или кто-то, кому вы доверяете) должны были сначала запустить эту команду на сервере, к которому вы подключаетесь. Это даст вам отпечаток пальца, похожий на тот, который указан в предупреждении в вопросе. Конечно, часто у вас нет этой информации, но если у вас есть основания подозревать, что что-то не так, запуск этой команды - это способ проверить, действительно ли сигнатура сервера действительно изменилась или что-то подозрительное происходит.


1
Используйте это, если ваш хост предоставляет отпечаток sha256 вместо хеша md5. ssh -o FingerprintHash=md5 example.org
Деклан МакКенна

1
Подробнее о FingerprintHash: superuser.com/questions/929566/… (то есть, sha256 следует отдать предпочтение, но вы можете не знать это значение, если вы не обновились достаточно недавно)
unhammer

2

Я столкнулся с той же проблемой, и если вы не хотите удалять весь known_hostsфайл, вы можете выполнить следующую команду:

ssh-keygen -R 10.10.10.69

Нет проблем с удалением known_hosts. Вам нужно будет только добавлять каждый сервер, к которому вы подключаетесь, в список каждый раз, когда вы подключаетесь к ним. Возможно, вы тоже испортите свои скрипты, потому что хостам еще не доверяют. Предупреждение появляется, когда подпись хоста (компьютер, к которому вы пытаетесь подключиться, генерирует новые ключи, обычно из-за переустановки или ротации ключей.)


0

Если вы считаете, что предупреждение является ложным срабатыванием, вы можете удалить свой / root / ssh / known_hosts, чтобы начать новые проверки.


3
Пожалуйста, не делайте этого, вы потеряете других известных хостов. Вместо этого, если вы уверены, что это ложный положительный результат, тогда удалите конкретную строку: «known_hosts: 8», строка 8 в этом случае.
Роджер Лайт

0

Если вы недавно переустанавливали сервер или иным образом изменили ключ хоста, возможно, безопасно удалить строку 8 из файла ~ / .ssh / known_hosts и повторно добавить сервер (с помощью ssh и ответив «да» «когда он запрашивает ключ проверки)


0

Поскольку ваш сервер находится в локальной сети, вы можете быть совершенно уверены.

Если вы переустановили свою систему, это нормально, но вместо удаления файла known_hosts я бы порекомендовал сделать echo "" > ~/.ssh/known_hosts


Люди все еще могут подшучивать в локальной сети. В деловых или школьных сетях может быть достаточно места, чтобы не быть надежным.
Азендейл


0

Скопируйте эту строку, но введите имя пользователя и имя хоста / IP для userи remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Например:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

И вставьте его на свой локальный терминал и запустите. Это сработало для меня.


0

На клиентском узле, где вы выдаете SSH,

vi ~/.ssh/known_hosts

Удалите все строки, которые начинаются с IP-адресов, которые находятся в той же сети, что и IP-адрес, на который вы пытаетесь подключиться. Это заставит клиентский узел постоянно добавлять (ECDSA) в список известных хостов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.