Ошибки

Ошибка SSH no matching host key type found: Their offer: ssh-rsa

Ваш ssh новее сервера и не принимает старый тип ключа, который тот предлагает. На своём старом сервере можно временно разрешить этот тип одной настройкой, а потом обновить сервер.

Обновлено 09.10.2026≈ 5 мин чтения
Содержание 11

Что сделать прямо сейчас

  1. Посмотрите, что стоит после Their offer: в конце сообщения.
  2. Если там ssh-rsa, подключитесь командой из шага 1.
  3. Если там только ssh-dss, читайте раздел про ssh-dss.
  4. Когда войдёте, запланируйте обновление сервера — шаг 3.

Вместо ВАШ_IP подставьте адрес своего сервера из панели провайдера. В примерах вывода стоит адрес 203.0.113.10 — у вас будет свой IP.

Что значит это сообщение

Unable to negotiate with 203.0.113.10 port 22: no matching host key type found. Their offer: ssh-rsa

В начале подключения ssh и сервер договариваются, какими алгоритмами пользоваться. Сервер предлагает типы своего ключа — они перечислены после Their offer. Если ни один из них ваш ssh не принимает, договориться не получается, и подключение обрывается до ввода пароля.

С версии OpenSSH 8.8 ssh по умолчанию не принимает подписи ssh-rsa — RSA с SHA-1: атаки на SHA-1 стали практически осуществимы. Ключ DSA (ssh-dss) отключён ещё с версии 7.0, а в OpenSSH 10.0 поддержку DSA убрали совсем. Значит, на сервере стоит старая версия OpenSSH или другая старая программа SSH, а у вас — новая. Свою версию покажет команда ssh -V.

Шаг 1. Подключитесь, разрешив старый тип ключа

Если сервер ваш и вы уверены, что это он, разрешите старый тип ключа только для этого подключения:

ssh -o HostKeyAlgorithms=+ssh-rsa root@ВАШ_IP

Знак + добавляет ssh-rsa к списку, который ssh принимает по умолчанию, остальные типы остаются. Дальше будет обычный вопрос о ключе сервера: сверьте отпечаток и ответьте yes.

Если после этого появилось Permission denied (publickey), а входите вы по ключу RSA, старый сервер не умеет проверять новые подписи и этого ключа. Добавьте вторую настройку:

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@ВАШ_IP

Шаг 2. Запишите настройку в config

Чтобы не набирать настройки каждый раз, запишите их в файл config для этого сервера (где лежит файл и как его открыть):

Host old-server
    HostName ВАШ_IP
    User root
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

Теперь подключение — ssh old-server. Вторая строка с ssh-rsa нужна, только если вы входите по ключу RSA. Не пишите эти строки в блок Host * — тогда старый тип будет разрешён для всех серверов, а не для одного.

Шаг 3. Обновите сервер

Разработчики OpenSSH советуют включать ssh-rsa только на время, пока старый сервер не обновят. Войдите на сервер и обновите систему — в Ubuntu и Debian это:

sudo apt update
sudo apt upgrade

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

Если в Their offer только ssh-dss

Если в Their offer стоит только ssh-dss, а ваш ssh версии 10.0 или новее, настройка +ssh-dss не поможет: поддержки DSA в нём нет. Подключиться можно через консоль в панели провайдера — она работает без SSH. Через неё обновите систему на сервере, как в шаге 3. В более старых версиях ssh, с 7.0 до 9.x, тип включается так же, как ssh-rsa: -o HostKeyAlgorithms=+ssh-dss.

Другие сообщения Unable to negotiate

С тем же началом Unable to negotiate бывают и другие сообщения. Их смысл тот же: сервер предлагает только старые алгоритмы. Решение похоже — после знака + подставьте алгоритм из Their offer:

СообщениеЧего не нашлосьНастройка
no matching key exchange method foundспособа обмена ключами-o KexAlgorithms=+алгоритм
no matching cipher foundшифра-o Ciphers=+алгоритм
no matching MAC foundалгоритма проверки целостности-o MACs=+алгоритм

Какие алгоритмы знает ваш ssh, покажут команды ssh -Q kex, ssh -Q key, ssh -Q cipher и ssh -Q mac. Если алгоритма из Their offer в списке нет, его уже убрали из вашей версии, и включить его не получится — остаётся обновить сервер.

Как проверить

Подключитесь с настройкой из шага 1 или по имени из config. Если всё в порядке, ssh задаст вопрос о ключе сервера или сразу спросит пароль. После обновления сервера попробуйте войти без дополнительных настроек:

ssh root@ВАШ_IP

Если сообщение не появилось, строки с ssh-rsa из config можно удалить. Если после обновления ssh выдал предупреждение REMOTE HOST IDENTIFICATION HAS CHANGED, читайте эту страницу: после обновления сервер мог начать предлагать ключ нового типа.

Похожие ошибки

СообщениеЧем отличается
Permission denied (publickey)Договориться удалось, но сервер не принял ваш ключ
kex_exchange_identificationСервер оборвал соединение ещё до выбора алгоритмов
REMOTE HOST IDENTIFICATION HAS CHANGEDКлюч сервера не совпал с записанным раньше
Host key verification failedКлюч сервера не удалось подтвердить

Источники

Сверено 9 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 09.10.2026