改 SSH 端口不把自己锁在门外:配置检查、双端口并存到撤旧口

11次阅读
没有评论

很多人改SSH端口时只编辑了sshd_config,保存后直接重启服务。服务可能没有监听新端口,防火墙也可能仍只放行旧端口,远程窗口一断就只能等机房或云厂商的控制台。改端口本身不难,难的是确保改的生效不把自己拦在机器外。

在不中断当前会话的前提下,先检查配置、让新旧端口并存,再从第二个终端测试新端口,最后确认防火墙和启动状态,出现问题时按最短路径回退。

先不要关闭当前SSH窗口

改 SSH 端口前先保留当前会话,记录服务器地址、当前端口、登录账号和云平台控制台入口,所有修改都在旧连接里完成
当前会话就是恢复通道,改之前先记全

当前会话是最重要的恢复入口。打开第二个终端前,先记录服务器地址、当前端口、登录账号和云平台控制台入口。任何修改都在当前会话里做,测试成功后再退出旧连接。

先保留当前连接:

  1. 保留当前SSH会话
  2. 记录当前端口和账号
  3. 确认云控制台或串口入口 第一次上手的服务器,这几项也要一起过一遍:新服务器先做的 8 项检查。
  4. 准备复制配置文件

没有第二个终端和控制台入口时,不要先改远程端口;免得中断进不去。

检查配置文件是否真的能通过

修改 sshd_config 后先跑 sshd -t 检查语法,再用 sshd -T 查看实际生效端口,注意重复 Port 与 Include 片段
sshd -t 查语法,sshd -T 看真实生效值

修改/etc/ssh/sshd_config后,先运行sshd -t检查语法,再用sshd -T | grep -i port确认实际生效端口。配置文件里可能有重复Port、Include文件或发行版默认片段。

先做配置检查:

  1. 备份sshd_config
  2. 运行sshd -t
  3. 查看sshd -T结果
  4. 检查Include目录

语法检查失败时不要重启服务;按报错行恢复上一份配置,再重新检查。

让新旧端口短暂并存

让新旧端口短暂并存:确认新端口未被占用后先增加 Port,reload 用 ss -lntp 查看 sshd 是否同时监听两个端口
新旧端口并存,测试失败还能回旧口

在确认新端口不是系统其他服务使用后,可以先保留旧端口,同时增加新端口。重启或reload后用ss -lntp查看sshd是否同时监听两个端口。这样第二个终端测试失败时,当前旧连接仍能继续工作。

先让新旧端口并存:

  1. 查看端口是否被占用
  2. 先增加新Port
  3. reload后看监听状态
  4. 第二终端指定新端口测试

新端口能登录、旧端口也仍可用时,再进入防火墙调整;不要一开始就关闭旧端口。

防火墙放行要和监听端口对应

服务器监听新端口不等于公网可达:ufw、firewalld 和云安全组要分别放行,并从外部网络测试,区分超时与拒绝
本机监听正常、外部超时,问题在防火墙和上游

服务器监听新端口不等于公网可达。按系统使用ufw、firewalld或云安全组时,要分别放行新端口,并从外部网络测试。云安全组没放行、家庭路由器端口转发没改,都会表现成SSH超时。端口转发这层怎么配,单独有一篇。

再放行防火墙:

  1. 查本机防火墙规则
  2. 查云安全组或端口转发
  3. 用外部网络测试
  4. 区分拒绝和超时

本机监听正常、外部超时,重点查防火墙和上游端口;外部立即拒绝,再看sshd或账号配置。

确认新端口后再撤旧端口

第二终端完成登录、sudo、上传文件与退出重连后,再删除旧 Port 和旧规则,重启一次确认仍监听新端口
验证完再撤旧端口,最后重启复测

第二终端完成登录、sudo、上传一个小文件和退出重连后,再删除旧Port并收紧旧规则。最后重启一次,确认系统启动后仍监听新端口。保留一份旧配置和云控制台入口,下一次升级还能回退。

最后撤掉旧端口:

  1. 新端口登录和sudo
  2. 重连后执行简单命令
  3. 删除旧Port和旧规则
  4. 重启后再次测试

如果重启后新端口消失,回到控制台恢复旧配置,不要连续重启碰运气。

备注

#修改ssh端口常用文件路径及命令:
#CentOS/RHEL/AlmaLinux/Rocky Linux 以及 Ubuntu/Debian:
vim /etc/ssh/sshd_config
#修改Port行对应端口
#配置检查命令
sshd -t
#高版本Ubuntu系统需要同时修改
systemctl edit ssh.socket
#下面保持同一段,四行都要在:
[Socket]
ListenStream=
#ipv4 监听
ListenStream=0.0.0.0:22
#ipv6 监听
ListenStream=[::]:22
#重载 systemd 配置
systemctl daemon-reload
#重启 SSH 服务,按系统选一条
systemctl restart ssh         # Debian / Ubuntu
systemctl restart sshd        # CentOS / RHEL
systemctl restart ssh.socket  # Ubuntu 高版本 socket 激活

正文完
 0
Ticifer
版权声明:本站原创文章,由 Ticifer 于2026-10-27发表,共计1728字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。