Ошибка подключения по SSH: Нет маршрута к хосту

В этом сценарии есть три машины:

  • Рабочий стол A : user@1.23.x.x
  • Ноутбук A : user@1.23.y.y
  • Машина B : user@192.168.z.z

Все машины имеют Ubuntu 11.04 (рабочий стол A - 64-разрядный) и имеют как openssh-сервер, так и openssh-клиент.

Теперь, когда я пытаюсь подключить рабочий стол A к ноутбуку A или наоборот с помощью ssh user@1.23.y.y Я получаю сообщение об ошибке, как

port 22: No route to host

в обоих случаях.

У меня есть обе машины, теперь, если я попробую те же команды с компьютера моего друга, то есть через рабочий стол B, я смогу получить доступ как к своему ноутбуку, так и к рабочему столу. Но если я попытаюсь получить доступ к рабочему столу B со своего ноутбука или с помощью рабочего стола, я получу

port 22: Connection timed out

Я даже пытался изменить номер порта ssh. в ssh_config файл, но безуспешно.

Примечание: что "Ноутбук A" использует Wi-Fi-соединение, в то время как "Машина A" использует Ethernet-соединение, а "Машина B" находится в совершенно другой сети.

@Лекенстейн> Вот он -

>Ноутбук A & amp; & amp; Настольный A - маршрутизатор / Nano_Rcvr, предоставленный мне провайдером. Таким образом, к одному маршрутизатору подключены две машины, и к ним можно получить доступ одновременно.вот мой вывод ifconfig для обеих машин :-Ноутбук

wlan0

      Link encap:Ethernet  HWaddr X:X:X:X:00:bc        inet addr:1.23.73.111  Bcast:1.23.95.255  Mask:255.255.224.0      inet6 addr: fe80::219:e3ff:fe04:bc/64 Scope:Link      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1      RX packets:108409 errors:0 dropped:0 overruns:0 frame:0      TX packets:82523 errors:0 dropped:0 overruns:0 carrier:0      collisions:0 txqueuelen:1000       RX bytes:44974080 (44.9 MB)  TX bytes:22973031 (22.9 MB)

Рабочий стол

eth0

      Link encap:Ethernet  HWaddr X:X:X:X:c5:78        inet addr:1.23.68.209  Bcast:1.23.95.255  Mask:255.255.224.0      inet6 addr: fe80::227:eff:fe04:c578/64 Scope:Link      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1      RX packets:10380 errors:0 dropped:0 overruns:0 frame:0      TX packets:4509 errors:0 dropped:0 overruns:0 carrier:0      collisions:0 txqueuelen:1000       RX bytes:1790366 (1.7 MB)  TX bytes:852877 (852.8 KB)      Interrupt:43 Base address:0x2000 

Выход из ip route show

      1.23.64.0/19 dev wlan0  proto kernel  scope link  src 1.23.73.111  metric 2       169.254.0.0/16 dev wlan0  scope link  metric 1000 

Выход из traceroute -n 1.23.73.111

       traceroute to 1.23.73.111 (1.23.73.111), 30 hops max, 60 byte packets       1  1.23.68.209  3008.787 ms !H  3008.786 ms !H  3008.784 ms !H

Маршруты выглядят нормально. Я предполагаю, что эти IP-адреса являются частными (локальная сеть) и не являются общедоступными.

Поскольку вы подключены к сети разными способами (Wi-Fi / проводной), весьма вероятно, что ваш маршрутизатор разделил проводные и беспроводные сети. Попробуйте подключить их оба по проводному (или беспроводному) соединению. Другая возможность заключается в том, что брандмауэр на компьютерах Ubuntu блокирует соединения.

В противном случае настройте свой маршрутизатор на использование одной и той же сети (подсети) для беспроводных и проводных подключений. Также убедитесь, что маршрутизатор не блокирует связь между клиентами.

Возможно, ваш маршрутизатор отбрасывает все нежелательные пакеты, поэтому ваш друг получает сообщение "время ожидания соединения истекло" на ваш общедоступный IP-адрес. Настройте переадресацию портов NAT таким образом, чтобы комбинация общедоступный IP-адрес + порт перенаправлялась на ваш адрес локальной сети.

Пример сети:

YOUR NETWORK (A)    Router A (public address: 198.51.100.1)    Desktop A - 10.0.0.2    Laptop  A - 10.0.0.3YOUR FRIENDS NETWORK (B)    Router B (public address: 203.0.113.1)    Machine B - 192.168.0.2

На Маршрутизатор A, настройка переадресации NAT:

To make your desktop accessible:  forward the public port 22 to 10.0.0.2To make your laptop accessible:  forward the public port 2222 to 10.0.0.3

Если у вас есть брандмауэр (ufw, iptables, ...) на установленных компьютерах разрешите входящий трафик на порт 22 (рабочий стол A) и порт 2222 (ноутбук A).

Доступ к рабочему столу теперь можно получить с помощью SSH с:

ssh user@198.51.100.1 -p 22

Теперь к ноутбуку можно получить доступ с помощью SSH с:

ssh user@198.51.100.1 -p 2222

Если вы хотите получить доступ к компьютеру вашего друга, примените эти инструкции к его компьютеру + маршрутизатору.

у меня была похожая проблема. Одна машина на проводе, одна беспроводная. Я нашел галочку в своем маршрутизаторе, кроме "отдельные IP-адреса для локальной сети и wlan", и поставил ее галочку. Теперь я могу войти в систему на компьютере wireles. Перед этим я получил сообщение об ошибке "Нет маршрута к хосту".

Установите флажок ssh при установке RHEL. Я не проверял это и вызывал ту же проблему. Пожалуйста, проверьте этот параметр

У меня сейчас такая же проблема на vps, и это совершенно странно, никогда не видел ничего подобного.

Я опытный администратор сервера, и такого рода ошибки обычно являются очевидными.

Отсутствие маршрута к хосту означает, что сервер не знает, как маршрутизировать пакет (таблица маршрутизации, однако я никогда не видел, чтобы это происходило только по одному протоколу, а не по другому).

В моем случае.

Нет подключения к Интернету.Ни один IPTABLESPing worksI не может подключаться к ip-адресам по обе стороны от поврежденного ip-адреса.Поврежденный ip-адрес говорит "нет маршрута к хосту" на любом tcp-порту.

Это говорит о том, что либо что-то среднее возвращает код ошибки, либо ошибка в ОС с таблицей маршрутизации.

Обратите внимание, что ошибка является мгновенной, а не задержкой, что означает, что отклонение является локальным. Но это все, что я могу диагностировать.

root@vps1 network # telnet 83.149.xx.xx 23Trying 83.149.xx.xx...telnet: Unable to connect to remote host: No route to hostroot@vps1 network # telnet 83.149.xx.xx 80Trying 83.149.xx.xx...telnet: Unable to connect to remote host: No route to hostroot@vps1 network # ping 83.149.xx.xxPING 83.149.xx.xx (83.149.xx.xx) 56(84) bytes of data.64 bytes from 83.149.xx.xx: icmp_seq=1 ttl=56 time=8.89 ms64 bytes from 83.149.xx.xx: icmp_seq=2 ttl=56 time=7.93 ms

В моем случае была сеть Docker на том же CIDR, что и мой VPN.

Я использовал следующую команду, чтобы выяснить, какая сеть, а затем удалил ее:

docker inspect $(docker network ls -q) | jq '.[] | {name: .Name, cidr: .IPAM.Config[0].Subnet}'

После этого все работало нормально.

Я бы странно получил эту ошибку даже после успешного запуска SSH между моим ПК и raspberry Pi. Что исправляет это для меня, так это выключение и включение Wi-Fi (как клиента, так и хоста), перезапуск вашего терминала и использование новых ip-адресов.

Я также столкнулся с проблемой с Docker network и М.ВандерлиОтвет помог мне определить, какая из моих сетей вызвала проблему. К сожалению, это была моя мостовая сеть Docker по умолчанию, и я не должен ее удалять. (Попытка удалить вашу сеть по умолчанию приводит к ошибке Error response from daemon: bridge is a pre-defined network and cannot be removed.

Итак, чтобы устранить проблему, мне пришлось изменить CIDR мостовой сети по умолчанию. Вот как это сделать - отредактируйте файл /etc/docker/daemon.json (создание файла с этим именем, если он не существует, нормально) и измените default-address-pools значение там для чего-либо, кроме того, к чему вы хотели бы подключиться за пределами мира Docker, и перезапустите Docker daemon. Ниже приведен пример содержимого файла:

{ "default-address-pools": [ {"base":"10.2.0.0/16","size":24} ]}

Если вы изменили / заменили свой системный жесткий диск, попробуйте удалить ключ хоста из файла .ssh/known_hosts, а затем попробуйте подключиться снова.

Я согласен с @Lekensteyn. Эти проблемы чаще всего связаны с проблемами NAT /переадресации. Объясните структуру вашей сети, и мы, вероятно, сможем вам помочь.

Не могли бы вы нарисовать свою сетевую настройку? ASCII-графика будет в порядке. Вам необходимо включить компьютеры, “интернет” и задействованные (домашние) маршрутизаторы/модемы.

Пожалуйста, исправьте эти IP-адреса. Является ли 1.23.x.x общедоступным IP-адресом? Если нет, пожалуйста, используйте 10.x.x.x, 192.168.x.x или 172.16.x.x. Можете ли вы пинговать другие машины? ping 192.168.x.x

Звучит странно, но это общедоступный IP-адрес, если вы хотите, я могу дать вам вывод ‘ifconfig’. Нет, я не могу пинговать обе свои машины, там написано “Хост назначения недоступен”, Хотя я могу пинговать машину моего друга.

@Lekensteyn посмотрите мой обновленный пост

@dewbot А как насчет рабочего стола B? 192.168.0.0/16 - это частный диапазон IP-адресов. Если рабочий стол вашего друга не находится в вашей сети, вам нужно заставить его правильно перенаправить свои порты (настройка NAT) и получить его общедоступный IP-адрес.

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

@dewbot, кстати, ваш MAC-адрес все еще виден в адресе IPv6, потому что расширение конфиденциальности отключено. Не могли бы вы добавить вывод ip route show, а также установить traceroute и предоставить вывод traceroute -n 1.23.73.111?

можете ли вы проверить настройки своего маршрутизатора на наличие чего-то вроде “изоляции клиента”? Я пытался связаться с вами (UTC 12:01), рабочий стол был недоступен, ноутбук ответил. Был ли рабочий стол запущен в то время?

Рабочий стол @Denwerko теперь выключен!