欢迎访问易策 · ZeroToOne,从0到1的成长与探索!

Ubuntu/Debian修改SSH端口教程

SSH 默认端口是 22,长期暴露在公网时容易被扫描和暴力尝试登录。本文以 Ubuntu / Debian 为例,介绍如何将 SSH 端口修改为自定义端口,并完成测试、放行和回滚操作。按照步骤执行,可以在不影响当前连接的前提下,更稳妥地完成端口变更。

修改前建议先保留当前 SSH 连接窗口,不要立刻断开。等新端口确认能登录后,再关闭旧端口 22

一、一键修改 SSH 端口命令

下面命令会将 SSH 端口修改为 22022,并自动完成以下操作:

  • 备份 /etc/ssh/sshd_config
  • 修改 SSH 监听端口
  • 检查 SSH 配置语法
  • 放行 UFW 防火墙端口
  • 重启 SSH 服务
  • 输出新的登录命令
NEW_PORT=22022; sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F_%H%M%S) && if sudo grep -qE '^[#[:space:]]*Port[[:space:]]+' /etc/ssh/sshd_config; then sudo sed -i -E "s/^[#[:space:]]*Port[[:space:]]+.*/Port ${NEW_PORT}/" /etc/ssh/sshd_config; else echo "Port ${NEW_PORT}" | sudo tee -a /etc/ssh/sshd_config >/dev/null; fi && sudo sshd -t && sudo ufw allow ${NEW_PORT}/tcp >/dev/null 2>&1 || true; sudo systemctl restart ssh || sudo systemctl restart sshd; echo "完成,请新开终端测试:ssh -p ${NEW_PORT} 用户名@服务器IP"

如果想改成其他端口,只需要修改开头的端口号:

NEW_PORT=30022

推荐使用 2000060000 之间的端口,避免和常见服务端口冲突。

二、测试新端口是否可用

执行一键命令后,不要关闭当前 SSH 窗口。

1. 使用新端口登录

新开一个终端,使用新端口登录:

ssh -p 22022 root@服务器IP

如果是普通用户:

ssh -p 22022 username@服务器IP

确认可以正常登录后,说明 SSH 端口修改成功。

三、检查 SSH 是否监听新端口

可以在服务器上执行以下命令:

ss -tulnp | grep ssh

如果看到类似下面内容,说明新端口已经生效:

LISTEN 0 128 0.0.0.0:22022
LISTEN 0 128 [::]:22022

四、云服务器还要放行安全组

如果服务器是阿里云、腾讯云、华为云、AWS、Google Cloud、Azure 等云服务器,只修改系统防火墙还不够。

还需要进入云厂商控制台,在安全组中放行新端口:

协议:TCP
端口:22022
来源:你的固定 IP,或 0.0.0.0/0

更安全的做法是只允许自己的固定 IP 访问 SSH。

五、Ubuntu 24.04 特殊情况

部分 Ubuntu 24.04 服务器可能启用了 ssh.socket,这时只修改 /etc/ssh/sshd_config 可能不会生效。

1. 检查 ssh.socket 状态

检查方法:

systemctl status ssh.socket

2. 修改 ssh.socket 监听端口

如果 ssh.socket 正在运行,可以执行:

sudo systemctl edit ssh.socket

填入:

[Socket]
ListenStream=
ListenStream=22022

3. 重新加载并重启服务

然后执行:

sudo systemctl daemon-reload
sudo systemctl restart ssh.socket

再检查端口:

ss -tulnp | grep 22022

六、确认成功后关闭 22 端口

新端口确认能登录后,再关闭旧端口 22

如果使用 UFW:

sudo ufw delete allow 22/tcp

如果云服务器安全组也开放了 22,建议同步删除安全组里的 22 端口规则。

七、回滚方法

如果新端口无法登录,可以回到原来的 SSH 窗口,把端口改回 22

sudo sed -i -E 's/^[#[:space:]]*Port[[:space:]]+.*/Port 22/' /etc/ssh/sshd_config
sudo sshd -t
sudo systemctl restart ssh || sudo systemctl restart sshd

同时放行旧端口:

sudo ufw allow 22/tcp

八、安全建议

修改 SSH 端口只能减少扫描,并不能代替真正的安全配置。建议同时做好以下设置:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

也就是:

  • 禁止 root 直接登录
  • 禁止密码登录
  • 使用 SSH 密钥登录
  • 防火墙只允许可信 IP 访问 SSH

总结

Ubuntu / Debian 修改 SSH 端口,推荐流程如下:

修改端口
检查配置
放行防火墙
放行云安全组
重启 SSH
新窗口测试登录
确认成功后关闭 22 端口

一键命令适合快速操作,但最重要的是不要关闭当前 SSH 窗口,必须先确认新端口可以正常登录。完成端口修改后,再结合密钥登录、禁用密码登录和限制来源 IP,才能进一步提升 SSH 的整体安全性。

评论