Представьте, что ваш SSH — это мост между вашим компьютером и сервером, а порт 22 — ворота на этом мосту. Если ворота закрыты, замки сломались или мост не тот, соединения не будет. В этой статье мы разберёмся с самыми популярными ошибками при подключении по SSH, как их диагностировать и исправлять. Без страшных терминов, зато с понятными примерами и полезными командами.


Основные ошибки подключения по SSH и что они означают

При попытке подключиться по SSH могут возникать разные ошибки, которые подскажут, где именно зарыта проблема.

Ошибка Что значит Пример вывода
Не удалось разрешить имя хоста DNS не может перевести доменное имя в IP ssh: Could not resolve hostname example.com: Name or service not known
Connection timed out Сервер не отвечает вовремя — будто молчит ssh: connect to host 111.111.111.111 port 22: Connection timed out
Connection refused Сервер отвергает соединение — словно дверь закрыта ssh: connect to host 111.111.111.111 port 22: Connection refused

Каждая из этих ошибок — это подсказка, что именно проверить в первую очередь.


Разрешение имени хоста — проверьте DNS и опечатки

Часто бывает, что вы вводите ssh user@example.com, а в ответ — "Could not resolve hostname". Это как если бы вы пытались позвонить другу, но набрали неправильный номер.

Что делать:

  • Убедитесь, что имя хоста написано правильно (опечатки — враг SSH).
  • Проверьте, работает ли DNS, выполнив команду:
ping example.com

Если пинг не проходит — проблема с DNS.

  • Используйте IP-адрес сервера напрямую:
ssh user@111.111.111.111

Это как обойтись без телефонной книги и сразу звонить по номеру.


Connection timed out — сервер молчит слишком долго

Эта ошибка означает, что попытка подключения зависла — сервер либо не отвечает, либо не доходит запрос.

Как проверить и исправить:

Шаг Команда/действие Что ищем
Убедиться, что IP-адрес указан верно Проверить адрес вручную Правильный IP
Проверить доступность порта 22 telnet 111.111.111.111 22 Соединение успешно или нет
Проверить настройки сети Попробовать подключиться с другого хоста Проблема в сети или сервере
Проверить брандмауэр iptables -nL или ufw status Порт 22 открыт и разрешён?

Если порт заблокирован — придется открыть его в настройках брандмауэра.


Connection refused — сервер закрыл дверь перед носом

Ошибка "Connection refused" — будто вы подошли к двери, а там висит табличка "Вход воспрещён". Сервер просто не принимает соединения на этот порт.

Возможные причины и решения:

  • SSH-сервис не запущен или упал.
  • Порт SSH изменён, а вы пытаетесь подключиться к старому.
  • Брандмауэр блокирует порт.
  • Сетевая политика сервера запрещает подключение.

Проверьте статус SSH-сервиса:

## для Systemd (Ubuntu 16+, CentOS 7+)
systemctl status sshd

## для старых систем (Ubuntu 14.04, CentOS 6)
service ssh status

Если сервис не работает, запустите его:

systemctl start sshd
## или
service ssh start

Брандмауэр — охранник сервера, который может не впустить

Если с сервисом всё хорошо, но подключение не идёт, загляните в брандмауэр. Он может блокировать порт SSH, даже если сервис готов к приёму гостей.

Проверка популярных брандмауэров:

Дистрибутив Команда проверки статуса Что искать
Ubuntu (UFW) ufw status Разрешён ли порт 22 (ssh)?
CentOS (FirewallD) firewall-cmd --list-services Есть ли ssh в списке разрешённых сервисов?
Все (iptables) iptables -nL Политика INPUT должна быть ACCEPT или разрешать порт 22

Если в политике стоит DROP или REJECT без исключения для ssh — брандмауэр надо настроить.


Как проверить, на каком порту работает SSH

Порт по умолчанию — 22, но администраторы могут его менять ради безопасности.

Проверьте конфигурационный файл сервера:

grep Port /etc/ssh/sshd_config

Вы увидите строку вроде:

Port 22

Чтобы узнать, слушает ли сервер порт, выполните:

ss -plnt | grep sshd

Вывод:

LISTEN 0 128 *:22 *:* users:(("sshd",pid=1493,fd=3))

Если слушается другой порт — подключайтесь к нему:

ssh -p <порт> user@server_ip

Диагностика с помощью telnet и PuTTY

Эти инструменты — как фонарик в темноте, показывающий, доступен ли порт сервера.

  • telnet (Linux/Mac/Windows с дополнительной установкой):
telnet 92.000.000.00 22

Если видите:

Connected to 92.000.000.00
SSH-2.0-OpenSSH_7.2 FreeBSD-20161230
Connection closed by foreign host.

значит, порт открыт и SSH-сервер доступен.

  • PuTTY (Windows):

В поле "Host Name" вводите IP, а в "Port" — номер порта (обычно 22). Если соединение открывается, все в порядке.


Особенности работы SSH с VLAN на сервере

Иногда бывают ситуации, как в одной из историй из жизни, когда сервер с двумя сетевыми интерфейсами и VLAN настроен правильно, сервис SSH слушает нужный порт, но подключение "зависает" — нет приглашения к вводу пароля.

Это происходит, потому что пакет может теряться в сетевых VLAN-метках или неправильно маршрутизироваться.

Как копать проблему:

  • Проверьте конфигурацию VLAN на сервере и коммутаторе (Trunk, Access порты).
  • Убедитесь, что IP-адрес и интерфейс, на котором слушает sshd, совпадают.
  • Используйте команды трассировки и сниффинга (tcpdump) для диагностики пакетов.

Быстрый чек-лист для устранения проблем с SSH

Что проверить Команда/Действие
Правильность имени хоста/IP ping example.com / ping 111.111.111.111
Доступность порта SSH telnet IP 22 / ss -plnt
Статус SSH-сервиса systemctl status sshd / service ssh status
Настройки брандмауэра ufw status / firewall-cmd --list-services / iptables -nL
Конфигурация SSH (порт) grep Port /etc/ssh/sshd_config
Логин и пароль корректны Проверить в инструкции или у администратора
Сеть и маршрутизация (VLAN, коммутаторы) Проверка конфигураций VLAN

Часто задаваемые вопросы (FAQ)

Q: Почему SSH-соединение "зависает", но не сбрасывается?
A: Это часто связано с проблемами в сети, например, неправильной настройкой VLAN или блокировкой пакетов на уровне коммутатора.

Q: Как изменить порт SSH?
A: В файле /etc/ssh/sshd_config измените параметр Port на нужный номер и перезапустите сервис.

Q: Как узнать, что SSH-сервис работает, если не могу подключиться?
A: Используйте консоль сервера или инструменты управления виртуалкой (например, VNC или IPMI) для проверки статуса сервиса.

Q: Что делать, если брандмауэр блокирует порт 22?
A: Добавьте правило, разрешающее порт 22, например, ufw allow 22 или соответствующее правило в firewall-cmd или iptables.


Подытожим

SSH — это как секретный туннель в ваш сервер. Если вы не можете попасть внутрь, сначала проверьте простые вещи: правильно ли написано имя, не заблокирован ли порт, запущен ли сервис. Если всё вроде бы в порядке, копайте глубже: брандмауэр, сеть, VLAN.

Не бойтесь использовать telnet и PuTTY для диагностики — они покажут, открыт ли порт и отвечает ли сервер. И помните, что иногда проблема не в сервере, а где-то на полпути: в сети, коммутаторе или настройках клиента.

Вперед, к безошибочным подключениям! А если что — перечитайте наш чек-лист и возвращайтесь за подсказками.


Статья составлена на основе опыта, рекомендаций и лучших практик устранения ошибок SSH.