Ubuntu 16.04 远程 ssh: connect to host x.x.x.x port xxx: No route to host

本文针对SSH连接时报错“No route to host”的问题提供了解决方案。通过检查网络连通性、Ubuntu自带防火墙状态及iptables防火墙规则,逐步排查并解决SSH连接异常。

问题描述

  • ssh 添加新端口后,ssh 连接报错:
ssh: connect to host x.x.x.x port xxx: No route to host

原因

  • 首先说一下,这个问题就是 Ubuntu 自带或 iptables 防火墙没有设置好的问题
  • 下面再详细说明具体的解决过程

问题检查及解决方法

  • 出现这个问题首先使用 ping 命令检查是否是网络连接不通
# 格式:ping IP地址 -p 新端口号
ping x.x.x.x -p xxx
  • 如果 ping 命令正常通信,则检查 Ubuntu 自带防火墙状态
# 1. 查看防火墙是否允许新添加的端口
sudo ufw status

# 2. 如果没有启用自带防火墙,则建议启用增加安全性
sudo ufw enable

# 3. 如果没有添加,则添加对应的新端口
sudo ufw allow xxx

# 4. 再次检查防火墙是否允许新添加的端口
sudo ufw status

# 5. ps:关闭 Ubuntu 自带防火墙(强烈不建议这么做)
sudo ufw disable
  • 但是还是同样报错,难道 ufw 修改防火墙后需要重启?但重启后还是不行
  • 检查 Ubuntu 服务器是否安装 iptables 防火墙及状态
1. 检查是否安装 iptables
whereis iptables

2. 如果没有安装,建议安装
sudo apt-get install iptables

3. 查看 iptables 的防火墙规则
sudo iptables -L

4. 如果 iptables 防火墙规则中没有添加新的 ssh 端口号,则需要在 /etc/iptables.rules 规则文件中添加新端口号

5. 通过 vim 打开 /etc/iptables.rules 文件
sudo vim /etc/iptables.rules

6. 在已有规则下面添加一条新规则(xxx 改成自己的端口后)
-A INPUT -p tcp -m state --state NEW -m tcp --dport xxx -j ACCEPT

7. 使修改好的规则生效
sudo iptables-restore < /etc/iptables.rules

参考

  • Ubuntu16.04自带防火墙ufw配置和用法:https://blog.youkuaiyun.com/u014389734/article/details/81814247
  • Ubuntu16.04 配置 iptables:https://www.cnblogs.com/bymingliang/p/12131651.html
在Windows系统使用ssh连接 `root@192.168.128.130` 出现 `Connection refused` 错误,可从以下方面解决: ### 检查目标主机SSH服务状态 确保目标主机(`192.168.128.130`)上的SSH服务已启动。在目标主机(如果是Linux系统)上使用如下命令启动SSH服务: ```bash sudo systemctl start sshd # 对于使用systemd的系统,如CentOS 7+、Ubuntu 16.04+ # 或 sudo service ssh start # 对于使用SysVinit的系统,如较旧的Ubuntu版本 ``` 同时,可设置SSH服务开机自启: ```bash sudo systemctl enable sshd ``` ### 检查目标主机SSH服务监听端口 确认目标主机的SSH服务监听的端口。默认情况下,SSH服务监听22端口,但也可能会被修改。可查看目标主机的SSH配置文件(通常是 `/etc/ssh/sshd_config`),找到 `Port` 字段。 ```bash sudo cat /etc/ssh/sshd_config | grep Port ``` 若端口不是22,在Windows系统连接时需要指定端口,使用如下命令: ```bash ssh -p <端口号> root@192.168.128.130 ``` ### 检查防火墙设置 目标主机的防火墙可能会阻止SSH连接。要确保防火墙允许SSH流量通过。以使用 `firewalld` 的CentOS系统为例,可使用如下命令开放SSH端口(默认22): ```bash sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload ``` 若使用 `iptables`,可添加如下规则: ```bash sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo service iptables save ``` ### 检查网络连接 确保Windows系统和目标主机(`192.168.128.130`)在同一网络中,且网络连接正常。可使用 `ping` 命令测试连通性: ```bash ping 192.168.128.130 ``` 若 `ping` 不通,需检查网络配置、路由器设置等。 ### 检查SSH服务配置 确认目标主机的SSH服务允许root用户登录。编辑目标主机的 `/etc/ssh/sshd_config` 文件,确保以下配置项正确: ```plaintext PermitRootLogin yes # 允许root用户登录 PasswordAuthentication yes # 允许密码认证 ``` 修改后,重启SSH服务: ```bash sudo systemctl restart sshd ``` ### 检查本地SSH客户端配置 确保Windows系统上的SSH客户端配置正确。若使用的是OpenSSH客户端,可检查配置文件(通常在 `C:\ProgramData\ssh`),确保端口、认证方式等配置正确。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn-WJW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值