Під час підключення через 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опцію, щоб видалити всі ключі, що належать імені хоста, з відомого файлу_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

Не потрібно видаляти весь відомий файл_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: Просто видаліть відомий файл_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, але ви, можливо, не знаєте цього значення, якщо ви нещодавно не оновилися)
зніміть

2

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

ssh-keygen -R 10.10.10.69

Немає проблем із видаленням відомих_хостів. Вам потрібно буде лише додавати кожен сервер, до якого ви підключаєтесь, до списку кожного разу, коли ви підключаєтесь до них. Можливо, ви також накрутите свої сценарії, оскільки хости ще не довіряють. Попередження виникає, коли підпис хоста (комп'ютер, на якому ви намагаєтеся підключитися до генерованих нових ключів, як правило, через перевстановлення або обертання ключів.)


0

Якщо ви вважаєте, що попередження помилкове, ви можете видалити / root / ssh / known_hosts, щоб почати нову перевірку.


3
Не робіть цього, ви втратите інших відомих хостів. Замість цього, якщо ви впевнені, що це хибний позитив, тоді видаліть конкретний рядок: рядок 8 "known_hosts: 8" у цьому випадку.
Roger Light

0

Якщо ви нещодавно перевстановили сервер або іншим чином змінили хост-ключ, можливо, безпечно видалити рядок 8 із вашого файлу ~ / .ssh / known_hosts і повторно додати сервер (шляхом ssh'ing на нього та відповівши "так "коли він просить підтвердити ключ)


0

Оскільки ваш сервер знаходиться в локальній мережі, ви можете бути впевнені в собі.

Якщо ви перевстановили систему, це нормально, але замість того, щоб видаляти файл знаних_хостів, я б рекомендував робити echo "" > ~/.ssh/known_hosts


Люди все ще можуть грати в трюки в локальній мережі. Ділові або шкільні мережі можуть мати багато місця для того, щоб не бути надійними.
Azendale


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-адреса, в яку ви намагаєтеся ssh. Це змусить клієнтський вузол постійно додавати (ECDSA) до списку відомих хостів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.