Проверьте отпечаток пальца для ключа ECDSA, отправленного удалённым хостом [закрыто]

Вопрос или проблема

Я получил хорошо известное предупреждение, когда пытался ssh на сервер:

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: IDENTIFIKATSIYA UDALYENNOGO HOSTA IZMENILAS'!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ВОЗМОЖНО, КТО-ТО ДЕЛАЕТ ЧТО-ТО ПОДЛОЕ!
Кто-то может подслушивать вас прямо сейчас (атака «человек посередине»)!
Также возможно, что ключ хоста только что изменился.
Отпечаток ключа ECDSA, отправленного удаленным хостом, является
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Пожалуйста, свяжитесь с вашим системным администратором.
Добавьте корректный ключ хоста в /home/user/.ssh/known_hosts, чтобы избавиться от этого сообщения.
Неправильный ключ ECDSA в /home/user/.ssh/known_hosts:10
Ключ хоста ECDSA для ipofmyhost изменился, и вы запросили строгую проверку.
Проверка ключа хоста не удалась.

И я знаю, почему, потому что я изменил ip этого сервера. Но если бы этого не произошло, как я мог бы проверить отпечаток ключа ECDSA, отправленного удаленным хостом?

Я попытался сделать это, выполнив:

echo -n ipofthehost | sha256sum

Но я не получаю такой же отпечаток. Я также пробовал “hostname,ip” как в AWS, но не получил совпадения.

Если я удалю запись из моего файла known_hosts и снова попробую ssh, это успешно срабатывает и сообщает следующее:

Отпечаток ключа ECDSA: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Вы уверены, что хотите продолжить подключение (да/нет)?

Так к чему применяется sha256sum для получения отпечатка и как я мог бы его проверить?

Отпечаток публичного ключа не является простым хешем строки IP-адреса.

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

В конце концов, вы можете сравнить текущий отпечаток в вашем файле known_hosts с ssh-keygen -l -F <домен_или_IP-адрес>.

Чуть подробнее: Поскольку предупреждающее сообщение относится к отпечатку для ECDSA ключа, отправленного удаленным хостом, мы собираем информацию о публичном (ECDSA) ключе хоста:

ssh-keyscan -t ecdsa IP_address_or_hostname > ecdsa_file_to_compare

Затем мы можем выяснить, где в нашем known_hosts файле находится публичный (ECDSA) ключ:

ssh-keygen -F IP_address_or_hostname > ecdsa_file_from_known_hosts

Если мы хотим сравнить отпечатки, мы должны вставить содержимое нашего known_hosts файла (только запись, относящуюся к этому хосту). Мы можем назвать это ecdsa_file_from_known_hosts и затем сравнить их следующим образом:

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

И проверить, показывают ли они один и тот же хеш.

Конечно, они не совпадают, и поэтому я получил предупреждающее сообщение (ssh проверяет это совпадение внутренне). Если мы уверены в изменении IP-адреса (так что мы не страдаем от атаки “человек посередине”), мы можем просто удалить запись этого хоста в нашем known_hosts файле, и в следующий раз, когда мы ssh на него, новая запись для него будет добавлена в такой файл.

Ответ или решение

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

Чтобы проверить отпечаток ECDSA-ключа, отправленного удаленным хостом, выполните следующие шаги:

  1. Сканирование ключей хоста: Используйте команду ssh-keyscan, чтобы получить публичный ключ ECDSA удаленного хоста. Замените IP_address_or_hostname на фактический IP-адрес или имя хоста:

    ssh-keyscan -t ecdsa IP_address_or_hostname > ecdsa_file_to_compare
  2. Получение ключа из файла known_hosts: Сравните полученный ключ с тем, что у вас уже записано в файле known_hosts. Для этого используйте следующую команду, чтобы извлечь существующий ключ:

    ssh-keygen -F IP_address_or_hostname > ecdsa_file_from_known_hosts
  3. Получение отпечатков: Теперь вы можете получить отпечатки для обоих файлов, чтобы проверить, совпадают ли они:

    ssh-keygen -lf ecdsa_file_to_compare
    ssh-keygen -lf ecdsa_file_from_known_hosts
  4. Сравнение отпечатков: Проверьте вывод команды. Если отпечатки не совпадают, это означает, что ключи различаются, и предупреждение о изменении идентификации хоста действительно имеет место.

Если вы уверены, что только IP-адрес сервера изменился и вы не подвержены атаке "человек посередине", вы можете удалить старую запись из файла known_hosts. После этого, когда вы снова попытаетесь подключиться к серверу по SSH, новая запись будет автоматически добавлена в ваш файл known_hosts.

Помимо вышеперечисленных шагов, важно следить за безопасностью ваших соединений и удостовериться, что изменения ключей были вызваны законными причинами, такими как изменения конфигурации сервера, а не потенциальными угрозами безопасности.

Оцените материал
Добавить комментарий

Капча загружается...