ssh远程No route to host问题解决

问题描述

服务器ssh 端口设为10022
主机A192.168.237.1/24 远程登录虚拟
主机B192.168.237.138
报错:ssh: connect to host 192.168.237.136 port 10022: No route to host

解决思路
  1. ssh端口设置是否正确
  2. 网络是否可达
  3. 防火墙策略是否合理

1.ssh端口检查
主机B测试本地:

ssh -p 10022 root@localhost

在这里插入图片描述

  1. 网络是否可达
    主机Aping主机B
ping 192.168.237.138

在这里插入图片描述

  1. 防火墙策略是否合理
cat /etc/sysconfig/iptables

在这里插入图片描述
iptables部分参数解释:
详细资料参考REDHAT6-IPTABLES

ACCEPT:匹配的数据包指定了目标,则该数据包将跳过其余的规则检查,并允许其继续到达其目的地。
DROP:则将拒绝该数据包访问系统,并且不会将任何内容发送回发送该数据包的主机。
QUEUE:则将数据包传递到用户空间。
REJECT:则将丢弃数据包,但会将错误数据包发送到数据包的始发者。
考虑到数据包在接受的过程中匹配防火墙REJECT规则,直接丢弃数据包的可能性。
试着将-A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT策略往上挪至:REJECT 前在这里插入图片描述
重启iptables:

/etc/init.d/iptables restart

测试:

ssh -p 10022 root@192.168.237.138

远程登录 成功

总结

防火墙策略执行顺序由上至下,依次匹配;在做防火墙配置时注意策略顺序。但我在firewallctl设置下没有出现这种情况,大多是基于iptables设置。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐