SSH Linux

SSH: Connection refused — соединение отклонено

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Ошибка ssh: connect to host port 22: Connection refused означает, что на сервере не слушает sshd или порт закрыт файрволом. Проверьте службу sshd, порт, ufw/firewalld, провайдерский файрвол и адрес сервера.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение

#Что означает ошибка

Сообщение
ssh: connect to host ... port 22: Connection refused

«Connection refused» значит, что до сервера пакеты дошли, но на порту никто не слушает (или файрвол активно отклоняет). Это отличается от «Connection timed out» (пакеты вообще теряются) и «Permission denied» (подключение есть, но не принят ключ/пароль). Правильный диагноз — определить, как именно сервер отвечает.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Не запущена служба sshdOpenSSH-сервер не установлен или остановлен.systemctl status ssh — inactive.Запустите службу.
SSH слушает другой портПорт изменён в sshd_config.ss -tlnp показывает другой порт.Подключайтесь с -p.
ФайрволПорт закрыт в ufw, firewalld, iptables или у провайдера.Порт не открыт из внешней сети.Откройте порт.
Неверный адрес или NATВы подключаетесь не к тому IP.IP изменился (динамический).Проверьте адрес.

#Пошаговое решение

  1. Проверьте адрес и портНа своём компьютере откройте терминал: Windows 10/11 — PowerShell через «Пуск», macOS/Linux — «Терминал». Выполните ssh -v -p 22 user@host, заменив user, host и 22 на реальные реквизиты из панели провайдера. Найдите в выводе строку Connecting to ... port ... и убедитесь, что IP и порт правильные. Connection refused означает отказ TCP-соединения, это не ошибка пароля.
  2. Проверьте доступность портаС клиента проверьте TCP-порт: в Windows PowerShell Test-NetConnection host -Port 22, в Linux/macOS с установленным netcat — nc -zv host 22. При недоступности порта проверьте DNS-имя, VPN и сетевой экран. Если порт доступен, но SSH всё равно не подключается, смотрите подробный вывод ssh -v: там может быть проблема с протоколом или авторизацией.
  3. Зайдите на сервер через консольЕсли SSH полностью недоступен, не меняйте межсетевой экран через это же соединение. Откройте кабинет VPS/хостинга и найдите «Консоль», «VNC», «Serial console» или «Доступ к серверу», если провайдер предоставляет такую функцию. Войдите через доверенную консоль под имеющимися учётными данными, проверьте сеть и состояние SSH. На выделенном сервере может потребоваться физический доступ или удалённое управление оборудованием.
  4. Установите и запустите sshdНа консоли сервера выполните systemctl status ssh на Debian/Ubuntu или systemctl status sshd на RHEL. Если пакет отсутствует, сначала убедитесь, что вы имеете консольный доступ и право устанавливать службу; на Debian/Ubuntu обычно пакет openssh-server. После установки проверьте конфигурацию sshd -t, затем включайте службу через systemctl. Не устанавливайте пакеты по SSH на сервере, к которому уже не можете подключиться.
  5. Проверьте портНа сервере выполните sudo ss -tlnp | grep sshd либо sudo ss -tlnp | grep :22 и найдите адрес и порт прослушивания. Сравните с директивой Port в /etc/ssh/sshd_config и конфигурациями sshd_config.d. Если служба слушает только 127.0.0.1, внешнее соединение не придёт. Перед изменением адреса прослушивания сохраните файл и запустите sudo sshd -t.
  6. Откройте порт в файрволеПроверьте правила локального брандмауэра командами sudo ufw status numbered (UFW) или sudo firewall-cmd --list-all (firewalld). Если подтверждено, что SSH слушает нужный порт, а правила блокируют его, добавьте точечное разрешение только для административной сети и актуального порта. Не открывайте безусловно 22 для всего Интернета; сохраните консольный доступ для отката.
  7. Проверьте файрвол провайдераВ панели облачного провайдера откройте «Сетевые правила», «Firewall» или «Security Groups» для нужной ВМ. Проверьте входящий TCP-порт SSH и разрешённые источники; исправляйте только нужное правило по политике безопасности организации. Убедитесь, что есть обратный маршрут через VPN, если он обязателен. Повторите Test-NetConnection со своего клиента.
  8. Проверьте конфигПосле корректировки конфигурации на сервере выполните sudo sshd -t: отсутствие сообщения обычно означает успешную синтаксическую проверку. Затем sudo systemctl reload ssh или sshd согласно дистрибутиву. Не закрывая рабочую консоль, откройте новое SSH-подключение с клиента и проверьте авторизацию. Если новое подключение не работает, верните исходный файл через консоль.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Установка и запуск OpenSSH-сервера на Debian/Ubuntu и проверка порта.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Установка и запуск OpenSSH-сервера на Debian/Ubuntu и проверка порта.
    sudo apt update && sudo apt install -y openssh-server
    sudo systemctl enable --now ssh
    sudo systemctl status ssh
    sudo ss -tlnp | grep ssh
    sudo ufw allow 22/tcp

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

    Вариант 2Для RHEL/CentOS/AlmaLinux.
    Linux · Терминал (Bash)КомандаНужен sudo
    Для RHEL/CentOS/AlmaLinux.
    sudo dnf install -y openssh-server
    sudo systemctl enable --now sshd
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload

Если служба «падает» сразу после запуска, смотрите журнал: sudo journalctl -u ssh -n 50. Типичные причины — ошибка в конфиге, отсутствие ключей хоста (создайте командой sudo ssh-keygen -A) или занятый порт. При смене порта SSH не забудьте открыть новый порт в файрволе и в панели хостинга до перезапуска службы, чтобы не потерять доступ. Для защиты включите вход по ключам и отключите вход root. Документация — OpenSSH.

Если подключение раньше работало, а теперь нет, проверьте, не сменился ли IP-адрес сервера (динамический адрес провайдера или пересозданная виртуальная машина) и не попали ли вы под блокировку fail2ban после неудачных попыток входа: sudo fail2ban-client status sshd покажет заблокированные адреса, а sudo fail2ban-client set sshd unbanip АДРЕС снимет блокировку. С клиента Windows используйте встроенный ssh из PowerShell или PuTTY; при смене ключа хоста удалите старую запись командой ssh-keygen -R адрес.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.