SystemdDoctor
служба не работает ssh сеть вход

kex_exchange_identification: Connection closed by remote host

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Сервер закрыл соединение по правилам доступа

    Списки разрешённых адресов на уровне библиотеки доступа отклоняют клиента до проверки подлинности.

  2. Исчерпан предел одновременных подключений

    При пределе неавторизованных соединений сервер закрывает лишние сразу. Под перебором это происходит и с законными клиентами.

  3. Соединение закрывает посредник

    Балансировщик, брандмауэр с проверкой содержимого или прокси могут закрывать соединение раньше сервера.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Видит ли сервер попытки подключения.

sudo journalctl -u ssh -u sshd -n 30 --no-pager 2>/dev/null

Действующие пределы и правила доступа.

sudo sshd -T 2>/dev/null | grep -iE "maxstartups|permitrootlogin|allowusers"

Подробный вывод клиента: на каком шаге обрыв.

ssh -vv пользователь@сервер 2>&1 | head -20

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Сервер закрыл соединение по правилам доступа
Почему происходит
Списки разрешённых адресов на уровне библиотеки доступа отклоняют клиента до проверки подлинности.
Как проверить
Посмотрите правила доступа и записи сервера.
sudo grep -vE "^#|^$" /etc/hosts.allow /etc/hosts.deny 2>/dev/null | head
sudo journalctl -u ssh -u sshd -n 20 --no-pager 2>/dev/null | grep -iE "refused|denied"
Как исправить
Добавьте нужный адрес в список разрешённых. Правила этого уровня работают до всего остального и потому дают такой ранний обрыв.
2. Исчерпан предел одновременных подключений
Почему происходит
При пределе неавторизованных соединений сервер закрывает лишние сразу. Под перебором это происходит и с законными клиентами.
Как проверить
Посмотрите предел и число попыток.
sudo sshd -T 2>/dev/null | grep -iE "maxstartups|maxsessions"
sudo journalctl -u ssh -u sshd --since "10 min ago" --no-pager 2>/dev/null | grep -c "Connection closed"
Как исправить
Поднимите предел и включите блокировку по числу неудачных попыток. Под перебором обычный предел закрывает доступ всем.
3. Соединение закрывает посредник
Почему происходит
Балансировщик, брандмауэр с проверкой содержимого или прокси могут закрывать соединение раньше сервера.
Как проверить
Проверьте, доходит ли обращение до сервера.
sudo journalctl -u ssh -u sshd --since "5 min ago" --no-pager 2>/dev/null | tail -5
timeout 5 bash -c "</dev/tcp/сервер/22" && echo порт открыт || echo порт закрыт
Как исправить
Если на сервере нет записей о попытке, разбирайтесь с посредником: соединение до сервера не доходит.

Пример вывода

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

$ ssh deploy@server
kex_exchange_identification: Connection closed by remote host
Connection closed by 198.51.100.10 port 22

# на сервере в это же время:
sshd[13100]: error: beginning MaxStartups throttling
sshd[13100]: drop connection #101 from [203.0.113.44]:51422 on [198.51.100.10]:22 past MaxStartups

Связанные ошибки

Где встречается чаще всего

Источники

  • sshd_config(5)
    MaxStartups и правила доступа.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено исчерпанием предела неавторизованных соединений.
    собственная проверка, systemd 255
    сверено 15 сентября 2026