Краткий ответ
Сообщение «connection refused» означает, что сервер доступен, но ни одна служба не принимает соединение на запрошенном порту. Чаще всего причина в том, что служба SSH (sshd) не работает, прослушивает другой порт или блокируется брандмауэром. Проверяйте по порядку: работает ли sshd, на каком порту, открыт ли порт и тот ли это хост.
Как проявляется проблема
- Клиент сообщает «ssh: connect to host ... port 22: Connection refused»
- Пинг до сервера проходит, но SSH-соединение сразу отклоняется
- Соединение работает из одной сети, а из другой нет
- После изменения порта или конфигурации sshd доступ пропадает
- Сервер загрузился после перезагрузки, и SSH больше не принимает соединения
Частые причины
Служба SSH не запущена
Процесс sshd не работает или упал, поэтому операционная система отклоняет соединение на порту 22. Проверьте статус службы и журналы.
SSH прослушивает другой порт
В конфигурации изменён порт (например, на 2222), а вы подключаетесь к порту по умолчанию 22. Клиент тогда получает connection refused.
Брандмауэр блокирует порт
Локальный брандмауэр (ufw, firewalld, nftables) или группа безопасности облака отклоняет трафик на порту SSH.
Неверный хост или IP
Вы подключаетесь к IP-адресу, на котором не работает SSH, к неправильному серверу или к устройству, не разрешающему SSH.
Служба слушает только localhost
sshd привязан к 127.0.0.1 или к неправильному интерфейсу, поэтому извне соединения не принимает.
Пошаговое решение
- 1
Проверьте, тот ли это хост и порт
Сначала подтвердите IP-адрес или имя сервера и порт. Если не знаете порт, спросите администратора или посмотрите конфигурацию. По умолчанию используется 22, но многие серверы используют другой порт. На клиенте попробуйте явно:
ssh -p 22 пользователь@сервер. Если по-прежнему получаете «connection refused», продолжайте дальше. - 2
Проверьте доступность сервера
С клиента выполните
ping сервериnc -vz сервер 22(илиtelnet сервер 22). Если ping проходит, а nc сообщает «Connection refused», сеть в порядке, но служба не принимает соединение. Если nc сообщает «timed out», вероятно, брандмауэр отбрасывает пакеты. - 3
Войдите локально или через консоль
Если у вас есть физический доступ или консоль провайдера (KVM, VNC, serial), войдите как root или пользователь с правами sudo. Без этого вы не сможете проверить состояние службы. Если консоли нет, обратитесь к провайдеру.
- 4
Проверьте статус службы SSH
Выполните
systemctl status ssh(Debian/Ubuntu) илиsystemctl status sshd(RHEL/CentOS). Если служба неактивна, запустите её:sudo systemctl start ssh(Debian/Ubuntu) илиsudo systemctl start sshd(RHEL/CentOS). Затем проверьте, включена ли она при загрузке системы:sudo systemctl enable ssh(Debian/Ubuntu) илиsudo systemctl enable sshd(RHEL/CentOS). - 5
Просмотрите журналы на ошибки
Используйте
journalctl -u ssh -n 50илиjournalctl -u sshd -n 50. Ищите сообщения об ошибках при запуске, например «bind: Address already in use» или «error: Bind to port 22 failed». На старых системах смотрите/var/log/auth.logили/var/log/secure. - 6
Проверьте, на каком порту и интерфейсе слушает sshd
Выполните
ss -tlnp | grep sshилиnetstat -tlnp | grep ssh. Обратите внимание на столбец Local Address. Если указано127.0.0.1:22, sshd слушает только локально. Если указано0.0.0.0:2222, порт 2222. В конфигурации/etc/ssh/sshd_configпроверьтеPortиListenAddress. - 7
Проверьте брандмауэр
На Ubuntu/Debian:
sudo ufw status verbose. На RHEL/CentOS:sudo firewall-cmd --list-all. Убедитесь, что порт SSH разрешён. Если используете облако, проверьте группу безопасности или сетевой брандмауэр в консоли провайдера. Если используете ufw, можно разрешить порт SSH (например,sudo ufw allow 22/tcp). - 8
Исправьте конфигурацию и перезапустите sshd
Если вы меняли
/etc/ssh/sshd_config, проверьте синтаксис:sudo sshd -t. Затем перезапустите службу:sudo systemctl restart ssh(Debian/Ubuntu) илиsudo systemctl restart sshd(RHEL/CentOS). Учтите, что перезапуск может прервать существующие соединения, поэтому заранее обеспечьте альтернативный доступ. Если всё в порядке, попробуйте снова с клиента.
Если ничего не помогло: расширенные проверки
Если sshd активен и слушает на 0.0.0.0:22, а соединение всё равно отклоняется, проверьте, нет ли другого слоя брандмауэра (например, правил nftables, fail2ban, который добавил запрет). Посмотрите sudo nft list ruleset и sudo fail2ban-client status sshd. В облачной среде проверьте, правильно ли публичный IP-адрес сопоставлен с экземпляром. Можно временно запустить sshd на другом порту для теста: sudo sshd -p 2222 -d (режим отладки, не прерывайте сеанс). Если проблема возникает только с одного клиента, проверьте локальный брандмауэр или VPN. Для production-серверов обязательно имейте альтернативный доступ (консоль, другой порт SSH), чтобы избежать блокировки.
Как избежать повторения
- Регулярно проверяйте статус службы sshd и журналы
- Ведите учёт изменений порта и правил брандмауэра
- Обеспечьте альтернативный доступ (консоль, другой порт)
- Используйте мониторинг, который обнаруживает недоступность SSH
Когда лучше обратиться к специалисту
Если у вас нет консоли или альтернативного доступа к серверу, а SSH не работает, вы рискуете окончательно заблокировать доступ. В этом случае лучше обратиться в IT-поддержку, которая имеет опыт удалённого восстановления.
Обслуживание ИТ-инфраструктуры · Серверы, сети, резервное копирование, безопасность и helpdeskЧастые вопросы
Почему я получаю «connection refused», когда ping проходит?
Ping проверяет сетевую доступность, а не службу. Connection refused означает, что хост доступен, но ни один процесс не принимает соединение на этом порту. Чаще всего sshd не работает или слушает на другом порту.
Как узнать, на каком порту работает SSH?
На сервере выполните `ss -tlnp | grep ssh` или посмотрите `/etc/ssh/sshd_config` (директива `Port`). Если у вас нет доступа к серверу, спросите администратора или провайдера.
Безопасно ли перезапускать sshd?
Перезапуск может прервать существующие SSH-сеансы, но не удалит данные. Перед перезапуском проверьте синтаксис с помощью `sudo sshd -t` и обеспечьте альтернативный доступ (например, консоль). Если не уверены в конфигурации, не перезапускайте sshd через тот же сеанс.