SSH — это самый безопасный способ управления удалёнными серверами Linux. Одной из самых частых ошибок с которыми вы можете столкнуться при использовании SSH является «ssh: connect to host port 22: No route to host». В этой короткой статье будет показано, как выяснить причины этой ошибки и исправить её.
Необязательно это может быть именно 22 порт — в зависимости от ваших настроек удалённого хоста порт может быть другим. В качестве меры безопасности, системные администраторы могли настроить доступ к SSH на другом порту.
Имеется несколько возможных причин, почему возникает эта ошибка. Это сообщение является нормальным, если удалённый сервер выключен. То есть в первую очередь вам нужно проверить, что удалённых хост работает. Это можно сделать с помощью команды ping:
ping 192.168.56.100
Если удаётся пинговать удалённый сервер, то это говорит о том, что удалённый сервер запущен. В этом случае причиной ошибки в чём-то другом.
Если у вас запущена служба файервола на удалённом сервере, то возможно, что файервол блокирует доступ по 22 порту.
Следовательно вам нужно подключиться физически к консоли сервера или если это VPS (виртуальный частный сервер) вы можете использовать любые другие средства, такие как VNC (если он уже установлен) или другие пользовательские приложения доступа к удалённому серверу, которые предоставлены вашим провайдером услуг VPS. Подключите и выполните вход в командную строку.
Если сервер работает на RHEL/CentOS/Fedora, то нужно использовать команду firewall-cmd, чтобы открыть 22 порт (или другой порт, который вы настроили для использования с SSH):
firewall-cmd --permanent --add-port=22/tcp firewall-cmd --reload
Если сервер работает на Debian/Ubuntu, то нужно использовать команду UFW, чтобы открыть 22 порт (или другой порт, который вы настроили для использования с SSH) следующим образом:
sudo ufw allow 22/tcp sudo ufw reload
Теперь попробуйте вновь подключиться к удалённому серверу по SSH:
ssh root@192.168.56.100
Проблема должна исчезнуть.
Связанные статьи:
- 4 способа узнать, какие порты прослушиваются в Linux (80.9%)
- 14 примеров команды ss для мониторинга сетевых подключений (80.9%)
- Как сервер TigerVNC сделать доступным из вне. Как подключиться к серверу TigerVNC через SSH туннель (69.1%)
- Как скачивать файлы по SSH (67.7%)
- Как конвертировать ключи SSH из формата PuTTY в формат OpenSSH (67.7%)
- dpkg: ошибка при обработке пакета ...: пакет абсолютно неработоспособен; перед настройкой его следует переустановить (РЕШЕНО) (RANDOM - 1.5%)
все верно, спасибо
Ни в какую не хочет работать UFW. Удалось только заставить его загружаться при старте системы, заменой строки в файле ufw.service на After=network-online.target.
Проверяю правила, идентичны как в другой локальной системе. Настройки портов идентичны. В одну сторону (на одном ПК работает) коннектит Samba, VNC, SSH, NFS, в другую нет (на втором ПК не пускает).
ssh user@10.12.*.*
ssh: connect to host 10.12.*.* port *: No route to host
sudo smbclient -L \\10.12.*.*
do_connect: Connection to 10.12.*.* failed (Error NT_STATUS_HOST_UNREACHABLE)
Я уже голову сломал об это UFW, переустанавливал, перезапускал, в том числе через systemctl и systemd, сбрасывал правила по умолчанию.
Причина был в дропе запросов на подключение к порту файрволом на роутере. Попал в бан лист) Спасибо, решил вопрос