Битлента
Ошибки и коды3 мин чтения·

SSH «no matching key exchange method found»: клиент и сервер не договорились об алгоритме

Ошибка SSH «no matching key exchange method found»: почему клиент и сервер не находят общий алгоритм обмена ключами и как безопасно это исправить.

Как читать сообщение об ошибке

В начале соединения клиент и сервер SSH обмениваются списками поддерживаемых алгоритмов: обмена ключами, шифрования, проверки целостности и подписи хоста. Затем каждая сторона выбирает первый подходящий вариант из общего набора. Если пересечения нет, соединение обрывается с сообщением «Unable to negotiate with … no matching key exchange method found» и строкой «Their offer», в которой перечислено, что предлагает удалённая сторона.

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

Почему возникает несовпадение

Чаще всего встречаются две ситуации. В первой у вас современный клиент, а сервер или сетевое устройство очень старое: старый маршрутизатор, коммутатор, встроенная система, устаревший дистрибутив. Современные версии OpenSSH со временем отключают слабые алгоритмы, например основанные на группах Диффи-Хеллмана со слабыми параметрами и на SHA-1, и такие устройства перестают быть совместимыми с клиентом по умолчанию.

Во второй ситуации всё наоборот: устаревший клиент, например старая версия программы под Windows, подключается к серверу, который отключил старые алгоритмы ради безопасности и предлагает только современные. Реже причина в самой конфигурации: в настройках клиента или сервера явно заданы директивы KexAlgorithms, ограничившие набор до непересекающегося.

Диагностика: SSH «no matching key exchange method found»

Запустите клиент с ключом -v и найдите в выводе список предложений сервера. Сравните его с тем, что поддерживает ваш клиент: команда ssh -Q kex выведет алгоритмы обмена ключами, известные вашей сборке. Если вы видите пересечение по названиям, но всё равно ошибка, ищите явные ограничения в файле конфигурации клиента и в системных настройках.

Определите, какая сторона отстаёт. Версия клиента видна по ssh -V, версия сервера обычно указана в баннере при подключении. Если сервер очень старый, стоит выяснить, есть ли для него обновление прошивки или пакета: это единственное решение, которое улучшает ситуацию, а не только маскирует её.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Варианты решения

Идеальный путь: обновить устаревшую сторону. Для сервера это обновление пакета OpenSSH или прошивки устройства, для клиента установка свежей версии. Если обновление невозможно, можно временно разрешить конкретный старый алгоритм для конкретного хоста в настройках клиента, добавив запись для этого хоста с директивой KexAlgorithms и знаком плюс перед названием. Знак плюс дописывает алгоритм в список по умолчанию, а не заменяет его.

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

Безопасность и профилактика

Ошибка полезна: она сигнализирует, что одна из сторон морально устарела. Если несовместимость касается сервера в интернете, стоит запланировать его обновление, а не годами держать исключения на клиентах.

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

Проверка на практике: небольшой сценарий

Представим типичный случай: вы обновили систему на рабочем компьютере и не можете зайти на старый сетевой коммутатор, хотя вчера всё работало. В сообщении в строке предложений видны только старые алгоритмы на основе SHA-1. Это точный признак того, что клиент теперь отключил их по умолчанию. Разумный порядок: сначала выяснить, нет ли обновления прошивки коммутатора, затем, если его нет, добавить исключение только для этого адреса в файл конфигурации клиента, и записать в заметках, что устройство подлежит замене.

Аналогично разбирается и обратный случай, когда подключение идёт к новому серверу со старой программы. Здесь достаточно обновить программу: разрешать что-либо на сервере не требуется. Не забывайте, что таких исключений накапливается много, и раз в полгода их полезно пересматривать, убирая те, что стали ненужными после обновлений.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
sshopensshшифрованиеlinux

Часто задаваемые вопросы

Читайте также