修改 Hetzner 服务器默认 SSH 端口后连接超时怎么排查

文章导读
修改 SSH 端口后连接超时,通常是因为云服务商的安全组或系统防火墙未放行新端口。建议先通过 VNC 或控制台登录服务器,确认防火墙规则和安全组配置已更新,再重启 SSH 服务。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

修改 SSH 端口后连接超时,通常是因为云服务商的安全组或系统防火墙未放行新端口。建议先通过 VNC 或控制台登录服务器,确认防火墙规则和安全组配置已更新,再重启 SSH 服务。

先说结论:修改 SSH 端口必须同步更新云控制台安全组、系统防火墙和 SSH 配置文件,缺一不可。

  • 先确认:云控制台安全组是否添加了新端口的入站规则。
  • 先处理:系统内部防火墙(firewalld/ufw/iptables)是否放行新端口。
  • 再验证:SSH 配置文件 sshd_config 中 Port 指令是否生效且未被注释。

命令速用版

以下命令用于快速检查端口监听和防火墙状态,需在服务器本地执行:

# 检查 SSH 服务监听端口
ss -tlnp | grep sshd
# 或
netstat -tlnp | grep sshd

# CentOS/RHEL 防火墙放行新端口
sudo firewall-cmd `--zone`=public `--add-port`=新端口号/tcp `--permanent`
sudo firewall-cmd `--reload`

# Ubuntu/Debian 防火墙放行新端口
sudo ufw allow 新端口号/tcp

# 测试本地连通性
telnet localhost 新端口号

为什么会这样

SSH 连接超时本质是网络包被拦截或服务未响应。修改端口后,流量路径上的三层防护可能未同步更新。

第一层是云服务商的安全组,它位于网络入口,若未放行新端口,数据包无法到达服务器。第二层是操作系统防火墙,如 firewalld 或 ufw,若规则未更新,会丢弃入站请求。第三层是 SSH 服务本身,若配置文件未正确修改或监听地址绑定错误,服务不会在新端口上响应。

分步处理

按照以下顺序排查,避免盲目重启导致无法恢复:

1. 使用控制台登录
若 SSH 无法连接,必须通过云服务商提供的 VNC 或 Web 控制台登录服务器。这是排查无法远程连接问题的唯一可靠入口。

修改 Hetzner 服务器默认 SSH 端口后连接超时怎么排查

2. 检查 SSH 配置文件
打开/etc/ssh/sshd_config,确认 Port 指令已修改为新端口号且未被注释。检查 ListenAddress 是否绑定到了 0.0.0.0 而非特定 IP。

3. 检查系统防火墙
根据系统类型执行防火墙命令。CentOS 使用 firewall-cmd,Ubuntu 使用 ufw。确保新端口已添加到允许列表并重载规则。

4. 检查安全组配置
登录云控制台,找到实例绑定的安全组。添加入站规则,协议选择 TCP,端口范围填写新端口号,授权对象建议先设为 0.0.0.0/0 测试。

5. 重启 SSH 服务
配置修改完成后,执行 systemctl restart sshd 使配置生效。若服务启动失败,查看状态日志。

怎么验证是否生效

在本地终端使用详细模式测试连接,观察握手过程:

ssh -vvv -p 新端口号 user@服务器 IP

若看到"Connected to..."且开始认证,说明网络层和端口已通。若卡在"Connecting...",说明网络层仍有拦截。同时可在服务器端查看日志/var/log/auth.log 或/var/log/secure,确认是否有连接尝试记录。

常见坑

安全组规则未生效:部分云平台修改安全组后有延迟,或规则优先级被更高优先级的拒绝规则覆盖。

修改 Hetzner 服务器默认 SSH 端口后连接超时怎么排查

监听地址绑定错误:sshd_config 中若设置了 ListenAddress 127.0.0.1,外网将无法连接,需改为 0.0.0.0 或注释该行。

端口被占用:新端口可能已被其他服务占用,导致 SSH 无法绑定。使用 ss -tlnp 检查端口占用情况。

密钥权限问题:若使用密钥认证,确保私钥权限为 600,且公钥已正确写入 authorized_keys。

常见问题

修改端口后还能用 22 端口连接吗?

取决于配置。若 sshd_config 中保留了 Port 22 且防火墙放行,则可以同时使用;若只配置了新端口,22 端口将拒绝连接。

无法通过控制台登录怎么办?

若 VNC 也无法登录,可能是服务器系统崩溃或网络完全中断。需在云控制台尝试重启实例或挂载救援系统排查。

如何快速回滚到默认端口?

通过控制台登录,将 sshd_config 中的 Port 改回 22,放行 22 端口防火墙规则,重启 SSH 服务即可恢复。

参考来源

  • 博客园 - 黄文 Rex:Linux 云服务器修改远程 SSH 端口后无法连接怎么办?
  • Hetzner-k3s 故障排除手册:10 个常见问题诊断和解决方案
  • Kube-Hetzner 故障排除手册:常见问题诊断和性能优化技巧
  • SSH 连接失败排查全攻略
  • 如何排查 SSH 连接超时问题
  • 服务器远程连接故障排查指南