Как исправить «Предупреждение: идентификация удаленного хоста изменилась!»

Опубликовано: 2024-10-16
Оглавление
  • Понимание предупреждения
  • Проверьте идентичность сервера
  • Решение 1. Удалите старый ключ хоста вручную (Windows, Mac, Ubuntu)
  • Решение 2. Очистите весь файлknown_hosts (Windows, Mac, Ubuntu)
  • Решение 3. Временно игнорируйте проверку ключа хоста (Windows, Mac, Ubuntu)
  • Решение 4. Добавьте новый ключ хоста вручную (Windows, Mac, Ubuntu)
  • Решение 5. Проверьте наличие изменений DNS или IP-адреса (Windows, Mac, Ubuntu)
  • Рекомендации по предотвращению этой проблемы в будущем (Windows, Mac, Ubuntu)
  • Заключение

Когда вы пытаетесь подключиться к удаленному серверу с помощью SSH, вы можете столкнуться с сообщением об ошибке: «Внимание: идентификация удаленного хоста изменилась!» . Это сообщение представляет собой функцию безопасности, которую SSH использует для защиты вас от атак «человек посередине», когда третья сторона может перехватить ваше соединение с сервером.

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

В этой статье мы расскажем, как безопасно решить эту проблему в системах Mac , Ubuntu (Linux) и Windows , гарантируя, что вы сможете продолжать безопасное подключение, не игнорируя потенциальные риски.

Возможно, вам будет интересно прочитать: Как исправить ошибку «Отказано в доступе (Publickey)»

Понимание предупреждения

Почему появляется предупреждение?

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

Распространенные сценарии предупреждения:

  • Переустановка или обновление сервера. Если сервер был переустановлен, сброшен или обновлен, он может сгенерировать новый ключ SSH, который не будет совпадать с ключом, хранящимся в вашем known_hosts .
  • Изменение IP-адреса. Если IP-адрес сервера изменился (например, из-за перехода к новому хостинг-провайдеру или сети), SSH может пометить это как подозрительное изменение.
  • Изменения DNS. Если в записях DNS сервера есть обновления или неправильные конфигурации, SSH может интерпретировать это как другой сервер.
  • Изменения конфигурации сервера. Иногда администраторы серверов меняют конфигурацию ключа SSH, в результате чего новый ключ не соответствует предыдущему.
  • Потенциальная угроза безопасности (атака «Человек посередине»). Предупреждение может быть сигналом о том, что кто-то пытается перехватить ваше соединение с сервером. Если вы не уверены в изменениях, перед продолжением необходимо проверить личность сервера.

Роль known_hosts :

В known_hosts SSH хранится информация об удаленных хостах, к которым вы ранее подключались. Файл обычно находится в каталоге ~/.ssh/ на Mac и Ubuntu, а для пользователей PuTTY в Windows он хранит ключи хоста в реестре Windows.

Проверьте идентичность сервера

Прежде чем вносить какие-либо изменения для решения проблемы « Идентификация удаленного хоста изменилась!» ” предупреждение, крайне важно проверить, была ли идентичность сервера законно изменена. Этот шаг гарантирует, что вы не станете жертвой атаки «человек посередине».

Почему вам следует сначала проверить личность сервера

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

Действия по проверке личности сервера:

  • Свяжитесь с администратором сервера. Если вы не являетесь тем, кто обслуживает сервер, обратитесь к администратору или хостинг-провайдеру и спросите, были ли внесены какие-либо недавние изменения, такие как изменение IP-адреса, переустановка сервера или повторное создание ключей.
  • Сравните отпечаток ключа хоста: используйте следующую команду, чтобы проверить ключ хоста сервера вручную:
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    В выводе будет показан отпечаток ключа хоста, который вы можете сравнить с отпечатком в known_hosts или запросить у администратора сервера.

Решение 1. Удалите старый ключ хоста вручную (Windows, Mac, Ubuntu)

Для Mac и Ubuntu (Linux):

  1. Откройте терминал.
  2. Откройте файл ~/.ssh/known_hosts с помощью текстового редактора:
     nano ~/.ssh/known_hosts
  3. Найдите строку, соответствующую имени хоста или IP-адресу удаленного сервера.
  4. Удалите строку, содержащую старый ключ хоста.
  5. Сохраните файл и закройте текстовый редактор.
  6. Повторно подключитесь к серверу с помощью SSH:
     ssh <username>@<hostname>

Автоматическое удаление (Mac и Ubuntu):

Вместо редактирования known_hosts вручную вы можете использовать следующую команду для автоматического удаления старого ключа хоста:

 ssh-keygen -R <hostname or IP>

Для Windows (с использованием PuTTY):

  1. Откройте ПуТТИ .
  2. Нажмите Windows + R , введите regedit и нажмите Enter.
  3. Перейдите по пути реестра:
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. Найдите запись, связанную с именем хоста или IP-адресом удаленного сервера.
  5. Щелкните правой кнопкой мыши запись и выберите «Удалить» .
  6. Повторно подключитесь к серверу в PuTTY, и вам будет предложено принять новый ключ.

Для Windows (с использованием Git Bash):

  1. Откройте Гит Баш .
  2. Выполните следующую команду:
     ssh-keygen -R <hostname>
  3. SSH предложит вам принять новый ключ при следующем подключении.

Решение 2. Очистите весь known_hosts (Windows, Mac, Ubuntu)

Для Mac и Ubuntu (Linux):

  1. Откройте терминал.
  2. Выполните следующую команду, чтобы удалить весь known_hosts :
     rm ~/.ssh/known_hosts
  3. Повторно подключитесь к удаленному серверу с помощью SSH:
     ssh <username>@<hostname>

Для Windows (с использованием PuTTY):

  1. Откройте ПуТТИ .
  2. Нажмите Windows+R , введите regedit и нажмите Enter, чтобы открыть редактор реестра .
  3. Перейдите к:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. Щелкните правой кнопкой мыши папку SshHostKeys и выберите «Удалить» . Это приведет к удалению всех сохраненных ключей хоста.
  5. Повторно подключитесь к серверу с помощью PuTTY, и вам будет предложено принять новый ключ хоста.

Для Windows (с использованием Git Bash):

  1. Откройте Гит Баш .
  2. Удалите known_hosts , выполнив:
     rm ~/.ssh/known_hosts
  3. Когда вы повторно подключитесь к серверу с помощью SSH, вам будет предложено принять новый ключ хоста.

Решение 3. Временно игнорируйте проверку ключа хоста (Windows, Mac, Ubuntu)

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

Для Mac и Ubuntu (Linux):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Для Windows (с использованием Git Bash):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Для Windows (с использованием PuTTY):

  1. Откройте ПуТТИ .
  2. Перейдите в «Соединение» > «SSH» > «Ключи хоста» .
  3. Отключите проверку ключа хоста, выбрав Всегда принимать .
  4. Повторно подключитесь к серверу без проверки ключа хоста.

Решение 4. Добавьте новый ключ хоста вручную (Windows, Mac, Ubuntu)

Для Mac и Ubuntu (Linux):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Для Windows (с использованием Git Bash):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Для Windows (с использованием PuTTY):

К сожалению, у PuTTY нет прямого эквивалента ssh-keyscan . Чтобы добавить ключ хоста вручную, вам необходимо подключиться к серверу и разрешить PuTTY запрашивать новый ключ хоста.

Решение 5. Проверьте наличие изменений DNS или IP-адреса (Windows, Mac, Ubuntu)

Для Mac и Ubuntu (Linux):

 nslookup <hostname>
 dig <hostname>

Для Windows (с использованием Git Bash):

 nslookup <hostname>
 dig <hostname>

Для Windows (с использованием PuTTY):

  1. Откройте командную строку или PowerShell .
  2. Используйте следующую команду, чтобы проверить DNS или IP-адрес:
     nslookup <hostname>
  3. Сравните IP-адрес в выходных данных с тем, что PuTTY показывает в реестре.
  4. Если IP-адрес изменился, удалите старый ключ хоста из реестра PuTTY, перейдя по адресу:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. Переподключитесь через PuTTY, и вам будет предложено принять новый ключ.

Рекомендации по предотвращению этой проблемы в будущем (Windows, Mac, Ubuntu)

  • Используйте статические IP-адреса. Настройте свои серверы со статическим IP-адресом, чтобы предотвратить непредвиденные изменения, которые могут вызвать предупреждение.
  • Регулярно очищайте или обновляйте known_hosts : периодически проверяйте и очищайте старые или устаревшие ключи хоста.
  • Рассмотрите возможность использования сертификатов SSH. Используйте сертификаты SSH для масштабируемого управления ключами хоста, чтобы снизить вероятность появления этого предупреждения.
  • Мониторинг изменений DNS или IP: следите за изменениями в записях DNS или IP-адресах и соответствующим образом обновляйте known_hosts .

Заключение

«Идентификация удаленного хоста изменилась!» Предупреждение — это важная функция безопасности SSH, которая предотвращает несанкционированный доступ путем проверки личности удаленных серверов. Хотя это может вызывать тревогу, важно предпринять необходимые шаги для проверки личности сервера, прежде чем приступать к каким-либо изменениям.

Используя решения, описанные в этой статье, вы можете безопасно устранить предупреждение независимо от того, используете ли вы Windows , Mac или Ubuntu . Всегда не забывайте сначала проверять подлинность сервера, а затем выбирать решение, которое лучше всего соответствует вашей ситуации, будь то удаление старого ключа хоста, очистка known_hosts или временный обход проверки.

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