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
推荐使用 20000 到 60000 之间的端口,避免和常见服务端口冲突。
二、测试新端口是否可用
执行一键命令后,不要关闭当前 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 的整体安全性。
评论