SSH连接错误:没有路由到主机


34

在这种情况下有三台计算机:

  • 桌面A:user@1.23.xx
  • 笔记本电脑A:user@1.23.yy
  • 机器B:user@192.168.zz

所有机器都具有Ubuntu 11.04(Desktop A是64位),并且同时具有openssh-server和openssh-client。

现在,当我尝试将台式机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”使用WiFi连接,而“机器A”使用以太网连接,而“机器B”位于完全不同的网络上。

@Lekensteyn这是->

笔记本电脑A &&台式机A-> ISP提供给我的路由器/ 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地址。1.23.xx是公共IP地址吗?如果不是,请使用10.xxx,192.168.xx或172.16.xx。您可以ping其他计算机吗?ping 192.168.x.x
Lekensteyn 2011年

听起来很奇怪,但是如果您希望我可以给您'ifconfig'输出,它是一个公共IP地址。不,我不能Ping我的两台机器,说“目的地主机无法恢复”,尽管我可以Ping我朋友的机器
Nihar Sawant

1
您可以绘制网络设置吗?ASCII艺术将很好。您需要包括机器,“互联网”以及相关的(家用)路由器/调制解调器。
Lekensteyn

2
我同意@Lekensteyn。这些问题是最常见的NAT /转发问题。请说明您的网络结构,我们可能会提供帮助。
奥利

@Lekensteyn看看我更新的帖子
Nihar Sawant

Answers:


18

路线看起来不错。我将假定这些IP地址是私有IP(LAN),并且不能公共访问。

由于您以不同的方式连接到网络(WiFi /有线),因此路由器很可能已分开有线/无线网络。尝试通过有线(或无线)连接将它们都连接。另一种可能性是Ubuntu计算机上的防火墙阻止了连接。

否则,将路由器配置为使用相同的网络(子网)进行无线和有线连接。还要确保路由器不会阻止客户端到客户端的通信。

您的路由器可能会丢弃所有未经请求的数据包,这就是为什么您的朋友在您的公共IP地址上收到“连接超时”消息的原因。配置NAT端口转发,以便公共IP地址和端口组合转发到您的LAN地址。

示例网络:

YOUR NETWORK (A)
    Router A (public address: 198.51.100.1)
    Desktop A - 10.0.0.2
    Laptop  A - 10.0.0.3

YOUR 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.2
To 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

如果要访问您的朋友机器,请将这些说明应用于他的机器+路由器。


3

我有一个类似的问题。一台机器有线一无线。我在路由器中找到了一个复选框,除了“用于lan和wlan的单独ips”外,还勾选了该复选框。现在我可以登录无线计算机。在此之前,我收到错误消息“主机没有路由”。



1

我自己现在在vps上遇到了同样的问题,它完全不可思议,从未见过类似的问题。

我是一位经验丰富的服务器管理员,这种错误通常很严重。

没有到主机的路由意味着服务器不知道如何路由数据包(路由表,但是我从未见过它仅在一种协议上发生而在另一种协议上没有发生)。

就我而言。

没有NAT Internet连接。没有IPTABLES Ping可以正常工作,我可以连接到ip损坏的ip的任一侧。损坏的ip在任何tcp端口上都说“没有路由到主机”。

这表明中间的某种情况正在返回错误代码,或者OS中带有路由表的错误。

请注意,错误是即时的,不是延迟,这意味着拒绝是本地的。但这就是我所能诊断的。

root@vps1 network # telnet 83.149.xx.xx 23
Trying 83.149.xx.xx...
telnet: Unable to connect to remote host: No route to host
root@vps1 network # telnet 83.149.xx.xx 80
Trying 83.149.xx.xx...
telnet: Unable to connect to remote host: No route to host
root@vps1 network # ping 83.149.xx.xx
PING 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 ms
64 bytes from 83.149.xx.xx: icmp_seq=2 ttl=56 time=7.93 ms

0

即使在我的PC和树莓派之间成功运行SSH之后,我也会奇怪地收到此错误。对我而言,解决此问题的方法是打开和关闭wifi(客户端和主机),重新启动终端并使用新的IP地址。


0

就我而言,在与我的VPN相同的CIDR上有一个Docker网络。

我使用以下命令找出哪个网络,然后将其删除:

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

之后,它工作正常。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.