Почему fingerprint открытого ключа сервера не совпадает с fingerprint в файле .ssh\known_hosts?

Почему отпечатки ключей, отправляемые хостами при подключении по SSH, и отпечатки, сохраненные в файле known_hosts, не совпадают? Каков процесс сохранения отпечатков ключей в файле known_hosts и почему они отличаются от отпечатков, передаваемых хостами при подключении по SSH?
  • 17 января 2024 г. 22:19
Ответы на вопрос 1
Отпечатки ключей (fingerprints) используются в SSH для верификации подлинности удаленного сервера, чтобы избежать атаки "man-in-the-middle". Когда вы впервые подключаетесь к SSH-серверу, клиент SSH получает публичный ключ этого сервера и показывает его отпечаток. Пользователь должен подтвердить, что отпечаток доверенный, к примеру, сравнив его со значением, полученным из надежного источника или напрямую от администратора сервера. После подтверждения этот отпечаток сохраняется в файле `known_hosts`.

Не совпадение отпечатков может быть вызвано несколькими причинами:

1. Ключ сервера изменился: Администратор сервера мог сгенерировать новую пару ключей для SSH-сервера, часто это делается в целях безопасности или при переустановке SSH-сервера.

2. Атака "man-in-the-middle": Несовпадение отпечатков может быть признаком того, что кто-то пытается прервать вашу сессию SSH.

3. Разные алгоритмы ключей или хеширования: SSH поддерживает различные алгоритмы для генерации публичных ключей (RSA, DSA, ECDSA, Ed25519) и различные алгоритмы хеширования (MD5, SHA256) для их отпечатков. Если версия SSH клиента или сервера была изменена, или в настройках был изменен предпочитаемый алгоритм, отпечатки могут отличаться из-за использования другого алгоритма или формата хеширования.

4. Разные форматы записи в `known_hosts`: По умолчанию, SSH использует хеш настоящего имени хоста в файле `known_hosts` для увеличения приватности, что также может изменить структуру хранящегося значения отпечатка.

Процесс сохранения отпечатков ключей в файл `known_hosts` состоит из следующих шагов:

1. При первом подключении к серверу, если сервер не находится в списке известных хостов (`known_hosts`), отображается запрос с отпечатком публичного ключа сервера.

2. Пользователь должен подтвердить отпечаток, сравнив его с известным надежным отпечатком для данного сервера (если таковой имеется).

3. После подтверждения отпечатка, он сохраняется в файле `known_hosts` пользователя вместе с информацией о соответствующем хосте.

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