Ssh no route to host что значит
Ошибка соединения SSH: нет маршрута к хосту
В этом сценарии есть три машины:
Все машины имеют Ubuntu 11.04 (рабочий стол A является 64-битным) и имеют как openssh-сервер, так и openssh-клиент.
Теперь, когда я пытаюсь подключить рабочий стол A к ноутбуку A или наоборот, ssh user@1.23.y.y я получаю сообщение об ошибке
Я владею обеими машинами, и теперь, если я попробую те же команды с машины моего друга, то есть через Рабочий стол B, я смогу получить доступ как к своему ноутбуку, так и к рабочему столу. Но если я пытаюсь получить доступ к Desktop B с моего ноутбука или с рабочего стола, я получаю
Я даже попытался изменить порт SSH нет. в ssh_config файле, но безуспешно.
Обратите внимание : что «Портативный компьютер A» использует соединение WiFi, а «Устройство A» использует соединение Ethernet, а «Устройство B» находится в совершенно другой сети.
рабочий стол
Выход из ip route show
Маршруты выглядят хорошо. Я предполагаю, что эти IP-адреса являются частными (LAN) и не являются общедоступными.
Поскольку вы подключены к сети по-разному (Wi-Fi / проводной), весьма вероятно, что ваш маршрутизатор разделил проводные / беспроводные сети. Попробуйте подключить их обоих по проводному (или беспроводному) соединению. Другая возможность заключается в том, что брандмауэр на компьютерах с Ubuntu блокирует соединения.
В противном случае настройте маршрутизатор на использование одной и той же сети (подсети) для беспроводных и проводных подключений. Также убедитесь, что маршрутизатор не блокирует связь клиент-клиент.
Ваш маршрутизатор, возможно, отбрасывает все незапрошенные пакеты, поэтому ваш друг получает сообщение «Тайм-аут соединения» на ваш публичный IP-адрес. Сконфигурируйте переадресацию портов NAT, чтобы комбинация общедоступный IP-адрес + порт переадресовывала на адрес вашей локальной сети.
На маршрутизаторе A настройте пересылку NAT:
Доступ к рабочему столу теперь можно получить с помощью SSH с:
Доступ к ноутбуку теперь можно получить по SSH:
Если вы хотите получить доступ к своей машине друзей, примените эти инструкции к его машине + маршрутизатор.
♌ Как исправить ошибку SSH «No route to host» в Linux
SSH является наиболее безопасным средством удаленного подключения к серверам Linux.
И одной из распространенных ошибок, возникающих при использовании SSH, является «ssh: connect to host port 22: No route to host».
В этой короткой статье мы покажем, как устранить неполадки и исправить эту ошибку.
Вот скриншот ошибки, о которой мы говорим.
Обратите внимание, что порт не обязательно может быть портом 22, в зависимости от ваших настроек на удаленном хосте.
В качестве меры безопасности системные администраторы могут настроить доступ к SSH через другой порт:
Существуют разные причины возникновения этой ошибки.
Первый, как правило, заключается в том, что удаленный сервер может быть отключен, поэтому вам нужно проверить, работает ли он, используя команду ping.
Исходя из результатов команды ping, сервер запущен и работает, поэтому он принимает эхо-запросы.
В этом случае причина ошибки кроется в другом.
Если на удаленном сервере запущена служба брандмауэра, возможно, брандмауэр блокирует доступ через порт 22.
Поэтому вам необходим физический доступ к консоли сервера или, если это VPS, вы можете использовать любые другие средства, такие как VNC (если он уже настроен) или другие пользовательские приложения для удаленного доступа к серверу, предоставляемые вашим поставщиком услуг VPS.
Войдите в систему и получите доступ к командной строке.
Затем используйте firewall-cmd (RHEL / CentOS / Fedora) или UFW (Debian / Ubuntu), чтобы открыть порт 22 (или порт, настроенный для использования для SSH) в брандмауэре следующим образом.
Теперь попробуйте снова подключиться к удаленному серверу через SSH.
Вы также найдете полезными следующие руководства по SSH:
Как исправить «No route to host» SSH в Linux (РЕШЕНО)
SSH — это самый безопасный способ управления удалёнными серверами Linux. Одной из самых частых ошибок с которыми вы можете столкнуться при использовании SSH является «ssh: connect to host port 22: No route to host». В этой короткой статье будет показано, как выяснить причины этой ошибки и исправить её.
Необязательно это может быть именно 22 порт — в зависимости от ваших настроек удалённого хоста порт может быть другим. В качестве меры безопасности, системные администраторы могли настроить доступ к SSH на другом порту.
Имеется несколько возможных причин, почему возникает эта ошибка. Это сообщение является нормальным, если удалённый сервер выключен. То есть в первую очередь вам нужно проверить, что удалённых хост работает. Это можно сделать с помощью команды ping:
Если удаётся пинговать удалённый сервер, то это говорит о том, что удалённый сервер запущен. В этом случае причиной ошибки в чём-то другом.
Если у вас запущена служба файервола на удалённом сервере, то возможно, что файервол блокирует доступ по 22 порту.
Следовательно вам нужно подключиться физически к консоли сервера или если это VPS (виртуальный частный сервер) вы можете использовать любые другие средства, такие как VNC (если он уже установлен) или другие пользовательские приложения доступа к удалённому серверу, которые предоставлены вашим провайдером услуг VPS. Подключите и выполните вход в командную строку.
Если сервер работает на RHEL/CentOS/Fedora, то нужно использовать команду firewall-cmd, чтобы открыть 22 порт (или другой порт, который вы настроили для использования с SSH):
Если сервер работает на Debian/Ubuntu, то нужно использовать команду UFW, чтобы открыть 22 порт (или другой порт, который вы настроили для использования с SSH) следующим образом:
Теперь попробуйте вновь подключиться к удалённому серверу по SSH:
SSH Connection Error: No route to host
There are three machines in this scenario:
All the machines have Ubuntu 11.04 (Desktop A is a 64bit one) and have both openssh-server and openssh-client.
Now when I try to connect Desktop A to Laptop A or vice-versa by ssh user@1.23.y.y I get an error as
I own both the machines, now if I try same commands from my friend’s machine, i.e. via Desktop B, I can access both my Laptop and Desktop. But if I try to access Desktop B from my Laptop or by Desktop I get
I even tried changing ssh port no. in ssh_config file but no success.
Note: that ‘Laptop A’ uses WiFi connection while ‘Machine A’ uses Ethernet Connection and ‘Machine B’ is on an entirely different network.
Desktop
Output of ip route show
8 Answers 8
The routes look fine. I’ll assume that those IP addresses are private ones (LAN) and not public accessible.
Since you’re connected in different ways to the network (wifi / wired), it’s very likely that your router has separated wired / wireless networks. Try connecting both of them on a wired (or wireless) connection. Another possibility is that a firewall on the Ubuntu machines is blocking connections.
Otherwise, configure your router to use the same network (subnet) for wireless and wired connections. Also make sure that the router does not block client-to-client communication.
Your router is possibly dropping all unsolicited packets, that’s why your friend gets a «connection timed out» message on your public IP address. Configure NAT port forwarding so that the public IP address + port combination forwards to your LAN address.
On Router A, setup NAT forwarding:
The desktop can now be accessed using SSH with:
The laptop can now be accessed using SSH with:
If you want to access your friends machine, apply these instructions to his machine + router.
ssh: No route to host
I’m failing to set-up an ssd on port 9922. With standard configuration on port 22 everything works fine. Then I change the port to 9922 by adding this line to ths sshd_config file:
I can connect to the server in the LAN on port 22 without prolems. After switching to port 9922 I get the following ouptput:
Any ideas what’s missing?
ifconfig on the target machines gives:
4 Answers 4
While it is not a smart idea to stop the firewall i would propose to start the firewall and allow incomming port 9922 by
You must likely have SELinux enabled at your server. If you don’t need it, disable it temporarily with setenforce 0 or permanently by modifying /etc/selinux/config file.
If you want to use SELinux, make it allow sshd to bind to port 9922:
For me was a combo of Selinux and Firewall, I found the solution doing in this way:
As already proposed, relaxing Selinux:
And after that, changing even the firewall permission:
These two changes make me possible to access to the server with the new ssh-port
You can have multiple Port lines in your sshd.conf, e.g.
I typically do this because I’ll have an external firewall/NAT open on the alternative port, but will want internal systems to hit the server on the traditional port 22.
Please make sure you restart the ssh daemon ( service sshd restart ) following any configuration file changes.
The error in your ssh client debug output should be «Connection timed out» instead of «No route to host». What’s in between you and the target system?