Перевірте відбиток пальця на ключ ECDSA, надісланий віддаленим хостом [закрито]


24

Я отримав відоме попередження при спробі вторгнутись у сервер:

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

І я знаю, чому тому, що я змінив ip такого сервера. Але якщо це було не так, як я міг перевірити відбиток пальця на ключ ECDSA, надісланий віддаленим хостом?

Я намагався зробити це:

echo -n ipofthehost | sha256sum

Але я не отримую однакового відбитка пальця. Я також випробував "ім'я хоста, ip", як у aws, але у мене нічого не було.

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

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

Тож до чого застосовується sha256sum, щоб отримати відбиток пальця і ​​як я міг це перевірити?


2
Без відомого доброго значення ви не можете його перевірити. Ви записуєте його лише при першому запуску SSHd і згенерування ключів, і перевіряєте, чи не відоме це хороше значення.

Я відредагував ваше запитання. Цей сайт приймає лише запитання про професійне ділове середовище. Питання для домашніх мереж тут є поза темою, я спробував зберегти ваше питання моєю редагуванням. Наразі проходить голосування проти вашого питання, щоб закрити це з цього приводу.
Peterh каже відновити Моніку

@ user186340 Здається, правда, що "ви записуєте це лише при першому запуску SSHd". Якщо у вас є доступ до машини, на якій працює SSHd, ви можете зробити /etc/ssh/ssh_host_ecdsa_key.pubвідбиток пальця. Я тільки що зробив.
jamadagni

Відповіді:


12

Відбиток відкритого ключа - це не простий хеш IP-рядка.

Щоб отримати відкритий ключ віддаленого хоста, ви ssh-keyscan <IP>можете скористатися звичайними інструментами для отримання його відбитків пальців ( ssh-keygen -lf <public_key_file>).

Нарешті ви можете порівняти з поточним відбитком у вашому known_hostsфайлі ssh-keygen -l -F <domain_or_ip>.


2
Мене бентежить, чому при підключенні через SSH та примушуванні клавіші ecdsa вперше ( ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' william@my.server) він дає мені 43-значний буквено-цифровий відбиток пальців ( ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.), але коли я запускаю, ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pubя отримую 32 символу шістнадцяткових знаків ??
Вільям Террелл

1
@WilliamTurrell Це трапляється тому, що ваш сервер повинен мати старішу (ймовірно, перед відкритим SSH 6.8) версію ssh-keygen(або ваш сервер-провайдер не йшов у ногу з часом і все ще надає хеди md5 замість нового SHA256). Тут перелічені обхідні шляхи: superuser.com/questions/929566
SeldomNeedy

9

Трохи детальніше : Оскільки попереджувальне повідомлення стосується відбитка пальця ключа ECDSA, надісланого віддаленим хостом, ми збираємо інформацію про відкритий (ecdsa) ключ хоста:

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

Тоді ми можемо дізнатися, де у нашому відомому файлі знаних_хостів цей відкритий (ecdsa) ключ:

ssh-keygen -l -F ipofhost

Якщо ми хочемо порівняти відбитки пальців, які ми маємо розмістити вміст нашого файла знаних_хостів (лише запис, пов’язаний з цим хостом), ми можемо назвати це ecdsa_file_from_known_hosts і порівняти їх наступним чином:

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

І перевірте, чи показує той самий хеш.

Звичайно, вони не відповідають, тому я отримав попередження (ssh перевіряє цю відповідність всередині). Якщо ми впевнені в зміні ip (тому ми не зазнаємо нападу "людина-в-середині", ми можемо просто видалити запис цього хоста у нашому файлі знаних_хостів, і наступного разу, коли ми введемо в нього новий запис для він буде доданий до такого файлу.

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