SSH Connection Refused: исправление ошибки подключения
Пошаговое руководство по устранению ошибки SSH connection refused в Linux: проверка службы, файрвола, конфигурации sshd и логов.
Симптомы
- Ошибка ssh: connect to host port 22: Connection refused
- SSH клиент не может подключиться к серверу
- Порт 22 недоступен для подключения
- После перезагрузки сервера SSH не работает
- Permission denied (publickey) при подключении
Возможные причины
- Пакет openssh-server не установлен
- Служба SSH не запущена или остановлена
- Файрвол блокирует порт 22
- Неправильная конфигурация sshd_config
- Неверные права доступа на ключи
- Блокировка TCP wrappers или fail2ban
Пошаговое решение
Проверьте, установлен ли SSH сервер
Ubuntu и Debian по умолчанию не устанавливают SSH сервер на рабочих станциях. Проверьте наличие пакета: dpkg -l | grep openssh-server. Если вывод пустой — установите: sudo apt install openssh-server. После установки служба запустится автоматически. На серверных установках SSH может быть опционально включён при инсталляции.
sudo apt install openssh-server Проверьте статус службы SSH
Даже если пакет установлен, служба может быть остановлена. Выполните: sudo systemctl status ssh. В выводе ищите строку Active: active (running). Если статус inactive (dead) или failed — запустите службу: sudo systemctl start ssh. Чтобы SSH запускался автоматически при загрузке: sudo systemctl enable ssh. Если systemctl start ssh завершается ошибкой — проверьте конфигурацию sshd_config.
sudo systemctl status ssh Проверьте, слушает ли SSH нужный порт
SSH может слушать нестандартный порт. Выполните: sudo ss -tlnp | grep sshd. В выводе будет показан порт в колонке Local Address:Port. По умолчанию это 0.0.0.0:22. Если порт изменён (например, 2222), подключайтесь с указанием порта: ssh -p 2222 user@host. Также проверьте конфигурацию: grep Port /etc/ssh/sshd_config.
sudo ss -tlnp | grep sshd Проверьте файрвол
UFW — стандартный файрвол Ubuntu. Проверьте статус: sudo ufw status. Если UFW активен, убедитесь, что порт 22 разрешён: sudo ufw allow ssh. Это добавит правило для порта 22 через TCP и IPv6. Если используется iptables — проверьте правила: sudo iptables -L INPUT -n | grep 22. Для firewalld: sudo firewall-cmd --list-ports. Если порт не разрешён — добавьте: sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload.
sudo ufw allow ssh Проверьте конфигурацию sshd_config
Неправильная конфигурация может помешать запуску SSH. Проверьте синтаксис: sudo sshd -t. Если есть ошибки — исправьте файл /etc/ssh/sshd_config. Обратите внимание на директивы Port, ListenAddress, AllowUsers, AllowGroups. Если AllowUsers задан, только указанные пользователи смогут подключиться. После изменений перезапустите SSH: sudo systemctl restart ssh.
sudo sshd -t Проверьте TCP wrappers и fail2ban
Файлы /etc/hosts.allow и /etc/hosts.deny могут блокировать SSH подключения. Проверьте: cat /etc/hosts.deny. Если там есть запись, блокирующая ваш IP — добавьте его в hosts.allow: echo 'sshd: ALL' >> /etc/hosts.allow. Если используется fail2ban — проверьте, не заблокирован ли ваш IP: sudo fail2ban-client status sshd. Для разблокировки: sudo fail2ban-client set sshd unbanip ВАШ_IP.
sudo fail2ban-client status sshd Просмотрите логи SSH
Логи содержат подробную информацию об ошибках. Выполните: sudo journalctl -u ssh --since "1 hour ago". Ищите сообщения об ошибках привязки к порту, конфликтов или проблем аутентификации. Также проверьте: sudo tail -100 /var/log/auth.log | grep sshd. Если лог показывает Bind to port 22 failed — другой процесс использует этот порт. Найдите его: sudo lsof -i :22.
sudo journalctl -u ssh --since "1 hour ago" Ошибка SSH Connection Refused означает, что сервер получил попытку подключения и явно отклонил её. Это отличается от тайм-аута, когда пакеты просто не доходят. В большинстве случаев проблема решается проверкой службы SSH, файрвола и конфигурации.
Типичные причины ошибки
SSH сервер не установлен (особенно на Ubuntu Desktop), служба SSH остановлена, файрвол блокирует порт 22, конфигурация sshd_config содержит ошибку, или ваш IP заблокирован fail2ban. Также возможен конфликт портов — другой процесс уже использует порт 22.
Как отличить Connection refused от Timeout
Connection refused — сервер доступен, но отклонил соединение. Timeout — пакеты не доходят до сервера (проблема с маршрутизацией или файрволом на промежуточных устройствах). Если ping до сервера работает, а SSH выдаёт refused — проблема в SSH сервисе или файрволе на самом сервере.
Когда проблема на стороне клиента
Если SSH подключается с других машин, но не с вашей — проблема на клиенте. Проверьте ~/.ssh/known_hosts (возможно, ключ сервера изменился), попробуйте подключиться с флагом -v для отладки: ssh -v user@host.
Диагностика проблемы загрузки
При проблемах с загрузкойLinuxсначала检查 system logs. Выполните journalctl -xb для просмотра логов последней загрузки. Обратите внимание на строки с [FAILED] или [ERROR]. Проверьте, какие службы не запустились: systemctl —failed. Это покажет точную причину незагрузки.
Восстановление через Live USB
Если система не загружается вообще, загрузитесь с Live USB. Смонтируйте корневой раздел: sudo mount /dev/sdaX /mnt. Проверьте файловую систему: sudo fsck /dev/sdaX. Переустановите загрузчик: sudo grub-install —root-directory=/mnt /dev/sda. Это восстановит GRUB после неудачного обновления.
Проверка конфигурации
Проверьте конфигурационные файлы: /etc/fstab (монтирование разделов), /etc/default/grub (параметры ядра), /etc/systemd/system.conf (systemd). Убедитесь, что UUID разделов в fstab совпадают с реальными: sudo blkid. Неправильный UUID — частая причина незагрузки после обновления или замены диска.
Исправление через chroot
Если нужен доступ к системе для исправления: sudo mount /dev/sdaX /mnt, sudo mount —bind /dev /mnt/dev, sudo mount —bind /proc /mnt/proc, sudo chroot /mnt. Теперь вы внутри системы и можете исправлять конфигурацию, переустанавливать пакеты или обновлятьinitramfs: update-initramfs -u.
Откат обновления
Если проблема возникла после обновления ядра или пакетов, загрузитесь с предыдущего ядра в меню GRUB. Затем выполните: sudo apt install —reinstall linux-image-$(uname -r) или sudo dnf downgrade kernel. Для автоматического отката: sudo apt-mark hold имя-пакета — запретит обновление этого пакета.
Источники
- linuxconfig.org — проверено 02.06.2026
- baeldung.com — проверено 02.06.2026
- oneuptime.com — проверено 02.06.2026
- linuxconfig.org — проверено 02.06.2026