此场景中有三台机器:
所有机器都装有 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
现在,就您而言,很可能是路径上的某处存在配置错误的硬件或软件防火墙。