- Основные ошибки подключения по SSH и что они означают
- Разрешение имени хоста — проверьте DNS и опечатки
- Connection timed out — сервер молчит слишком долго
- Connection refused — сервер закрыл дверь перед носом
- Брандмауэр — охранник сервера, который может не впустить
- Как проверить, на каком порту работает SSH
- Диагностика с помощью telnet и PuTTY
- Особенности работы SSH с VLAN на сервере
- Быстрый чек-лист для устранения проблем с SSH
- Часто задаваемые вопросы (FAQ)
- Подытожим
Представьте, что ваш 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.