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' 位于完全不同的网络上。

笔记本电脑 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 

答案1

这些与无线相关的部分连接问题通常归因于多播处理中断导致 ARP 无法可靠地传输。

请参阅我在此答案中推荐的故障排除步骤: WiFi 网络适用于 Macbook Pro 和 Win XP,但 Win Vista“连接受限”

答案2

这是一条糟糕的错误消息。这些 ssh 错误可能会让您认为存在网络问题,但实际上并没有。到远程计算机的路由可能很好,但当时 iptables 阻止 ssh(在 CentOS6.7 上仍然如此)会导致ssh: connect to host ec239dict port 22: No route to host

如果其他 TCP 流量可靠地到达机器,则不是网络路由问题。除了 ssh,您还尝试过哪些其他服务来测试连接性?http?ping?tracepath?Web 服务器可以正常运行,但 ssh 不起作用。

以下 /etc/sysconfig/iptables 文件来自一台 CentOS6.7(2015 年 12 月)机器,尝试 ssh 连接该机器会导致 ssh: connect to host ec239dict port 22: No route to host 防火墙问题是,用于接受传入 ssh 连接的第 12 行永远无法到达,因为它需要移至第 10 行的拒绝之前。

 1  # Firewall configuration written by system-config-firewall
 2  # Manual customization of this file is not recommended.
 3  *filter
 4  :INPUT ACCEPT [0:0]
 5  :FORWARD ACCEPT [0:0]
 6  :OUTPUT ACCEPT [0:0]
 7  -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 8  -A INPUT -p icmp -j ACCEPT
 9  -A INPUT -i lo -j ACCEPT
10  -A INPUT -j **REJECT** --reject-with icmp-host-prohibited
11  -A FORWARD -j **REJECT** --reject-with icmp-host-prohibited
12  -A INPUT -m state --state NEW -m tcp -p tcp -**-dport 22 -j ACCEPT**
13  COMMIT

奇怪的是,ssh 错误消息变得更糟,如果防火墙端口打开,但 ssh 守护程序未运行,则错误为
ssh: connect to host ec239dict port 22: Connection refused
连接被拒绝“听起来确实像是防火墙阻止了连接尝试,但实际上这是防火墙打开但 ssh 守护程序关闭时的错误消息。同样,ssh 错误消息中有一个错误。确保 ssh 守护程序正在运行:

netstat -tunap | grep 22
chkconfig --list | grep ssh
/etc/init.d/ssh? status

现在,就您而言,很可能是路径上的某处存在配置错误的硬件或软件防火墙。

相关内容