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

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

此场景中有三台机器:

所有机器都装有 Ubuntu 11.04(桌面 A 是 64 位),并且装有 openssh-server 和 openssh-client。

现在,当我尝试将台式机 A 连接到笔记本电脑 A 或反之亦然时,出现以下错误:ssh [email protected]

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

答案1

路线看起来不错。我假设这些 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,, ...),则允许传入流量到端口 22(台式机 A)和端口 2222(笔记本电脑 A)。iptables

现在可以使用 SSH 访问桌面:

ssh [email protected] -p 22

现在可以使用 SSH 访问笔记本电脑:

ssh [email protected] -p 2222

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

答案2

我遇到过类似的问题。一台机器有线,一台无线。我在路由器上除了“为局域网和无线局域网设置单独的 IP”之外还发现了一个复选框,并将其勾选。现在我可以登录无线电脑了。在此之前,我收到错误消息“没有到主机的路由”。

答案3

安装 RHEL 时选中 ssh 复选框。我没有选中它,导致同样的问题。请检查该参数

答案4

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

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

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

之后一切运行正常。

相关内容