Ошибка SSH no matching host key type found: Their offer: ssh-rsa
Ваш ssh новее сервера и не принимает старый тип ключа, который тот предлагает. На своём старом сервере можно временно разрешить этот тип одной настройкой, а потом обновить сервер.
Содержание 11
Что сделать прямо сейчас
- Посмотрите, что стоит после Their offer: в конце сообщения.
- Если там ssh-rsa, подключитесь командой из шага 1.
- Если там только ssh-dss, читайте раздел про ssh-dss.
- Когда войдёте, запланируйте обновление сервера — шаг 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 | Ключ сервера не удалось подтвердить |
Источники
- OpenSSH 8.8: примечания к выпуску — ssh-rsa отключён по умолчанию, пример настройки для старого сервера.
- OpenSSH 7.0: примечания к выпуску — отключение ssh-dss.
- OpenSSH 10.0: примечания к выпуску — удаление DSA.
- OpenSSH: устаревшие алгоритмы — знак + и команда ssh -Q.
- man ssh_config — HostKeyAlgorithms, PubkeyAcceptedAlgorithms, KexAlgorithms, Ciphers, MACs.
Сверено 9 октября 2026 года.
Что почитать дальше
- Как подключиться к VPS по SSH — подключение и файл config.
- REMOTE HOST IDENTIFICATION HAS CHANGED — если ключ сервера сменился.
- Как настроить VPS с нуля — что сделать на новом сервере.
- Как открыть терминал — если вы ни разу не запускали команды.
Проверено и обновлено: 09.10.2026