Ошибка SSH kex_exchange_identification: Connection closed by remote host
Сервер принял соединение и сразу его закрыл — ещё до того, как ssh успел представиться. Причина — временная защита сервера, перегрузка или не тот порт. Разберём, как отличить.
Содержание 11
Что сделать прямо сейчас
- Если перед этим вы несколько раз ошиблись с паролем или ключом, подождите 10 минут и подключитесь снова — шаг 2.
- Если ошибок не было, повторите подключение через минуту — шаг 3.
- Если указываете порт через -p, проверьте номер — шаг 4.
- Если не помогло, посмотрите журнал через консоль — шаг 5.
Вместо ВАШ_IP подставьте адрес своего сервера из панели провайдера. В примерах вывода стоит адрес 203.0.113.10 — у вас будет свой IP.
Что значит это сообщение
В зависимости от того, в какой момент оборвалось соединение, ssh пишет одно из:
kex_exchange_identification: Connection closed by remote host
Connection closed by 203.0.113.10 port 22kex_exchange_identification: read: Connection reset by peer
Connection reset by 203.0.113.10 port 22banner exchange: Connection to 203.0.113.10 port 22: Broken pipeНовые версии ssh в первом случае показывают только нижнюю строку, Connection closed by. Смысл у всех вариантов один: сервер ответил на подключение, но закрыл его в самом начале, до обмена версиями. Пароль и ключ здесь ни при чём — до них дело не дошло.
Это отличает ошибку от Connection refused, где на порту никто не слушает, и от Connection timed out, где ответа нет вовсе.
Шаг 1. Посмотрите подробности
Запустите ssh с ключом -v — он покажет, что успел прислать сервер:
ssh -v root@ВАШ_IPИщите строки со словами banner line:
| Что в выводе | Что значит |
|---|---|
banner line 0: Not allowed at this time | Сервер сам отказал в подключении — шаги 2 и 3 |
banner line 0: HTTP/1.1 400 Bad Request | На этом порту веб-сервер, а не SSH — шаг 4 |
banner line contains invalid characters, а ниже invalid format | На порту другая программа, не SSH — шаг 4 |
| строк banner line нет | Сервер закрыл соединение молча — шаги 2, 3 и 5 |
Шаг 2. Если перед этим не получалось войти
В OpenSSH с версии 9.8 сервер наказывает адреса, с которых не получается войти. Каждое подключение с неверным паролем, чужим ключом или несуществующим пользователем добавляет несколько секунд «штрафа». Когда штраф накопится, сервер на время перестаёт принимать подключения с этого адреса: ответ — Not allowed at this time и обрыв. При повторных ошибках срок растёт, но при настройках по умолчанию не больше 10 минут.
Что делать: подождите 10 минут и подключитесь один раз, с правильными данными. Не повторяйте подключение каждые несколько секунд — неудачные попытки продлевают блокировку. Если не помните пароль, задайте новый через консоль в панели провайдера — она работает без SSH.
Шаг 3. Если на сервер ломятся боты
На любой сервер с открытым SSH постоянно заходят боты, которые подбирают пароли. Сервер ограничивает число подключений, которые ещё не вошли: по умолчанию, когда таких 10, новые отклоняются с вероятностью 30%, а при 100 — все. Ваше подключение может попасть под это ограничение, хотя вы ни в чём не ошиблись.
Что делать: подключитесь ещё раз через минуту. Если обрыв повторяется постоянно, загляните в журнал (шаг 5): там будет видно, сколько подключений сервер отклоняет. От ботов защищает вход только по ключу — шаг 4 инструкции по SSH.
Шаг 4. Проверьте порт
Если в команде есть -p, ssh стучится в указанный порт. Когда там работает не SSH, а, например, веб-сервер, он не понимает ssh и закрывает соединение. Порт SSH по умолчанию — 22; если его не меняли, -p не нужен:
ssh root@ВАШ_IPЕсли порт меняли, укажите тот, что прописан в настройках SSH на сервере:
ssh -p 2222 root@ВАШ_IPВместо 2222 — ваш номер. Узнать его можно через консоль сервера, командой sudo grep -ri "^port" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/. Если она ничего не вывела, порт стандартный — 22.
Шаг 5. Посмотрите журнал на сервере
Зайдите через консоль в панели провайдера, попробуйте подключиться по SSH с компьютера и сразу выполните в консоли:
sudo journalctl -u ssh -n 50Свежие строки — внизу. Отказы сервера выглядят так:
| Строка в журнале | Что значит |
|---|---|
drop connection #0 from [198.51.100.7]:51234 on [203.0.113.10]:22 penalty: failed authentication | Адрес временно заблокирован после неудачных входов — шаг 2 |
drop connection #10 from [198.51.100.7]:51234 on [203.0.113.10]:22 MaxStartups | Слишком много подключений, которые ещё не вошли, — шаг 3 |
Вместо 198.51.100.7 будет IP вашего компьютера или чужие адреса. Если строк drop connection с вашим адресом нет, а подключение всё равно обрывается, напишите в поддержку провайдера: приложите время попытки и вывод ssh -v.
Как проверить
ssh root@ВАШ_IPЕсли всё в порядке, ssh задаст вопрос о ключе сервера или спросит пароль — значит, соединение больше не обрывается.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
| Connection refused | На порту никто не слушает |
| Connection timed out | Сервер не отвечает вовсе |
| Too many authentication failures | Соединение оборвалось позже — на переборе ключей |
| Broken pipe | Обрыв уже после входа, во время работы |
Источники
- man sshd_config — MaxStartups и PerSourcePenalties, значения по умолчанию.
- OpenSSH 9.8: примечания к выпуску — появление PerSourcePenalties.
- man journalctl — параметры -u и -n.
- Исходный код OpenSSH — тексты сообщений клиента и строки журнала сервера.
Сверено 9 октября 2026 года.
Что почитать дальше
- Как подключиться к VPS по SSH — подключение и консоль в панели провайдера.
- Permission denied, please try again — если не подходит пароль.
- Connection refused — если порт закрыт.
- Как открыть терминал — если вы ни разу не запускали команды.
Проверено и обновлено: 09.10.2026