改ssh默认端口可大幅减少自动化暴力破解尝试,因全网扫描器默认只扫22端口,换成非常用端口(如57842)能过滤90%以上低级脚本攻击,但需同步禁用root登录、启用密钥认证并配置防火墙放行。

改 SSH 默认端口不能阻止所有攻击,但能大幅减少自动化暴力破解尝试。22 端口是公开靶子,全网扫描器默认只扫它;换成其他端口后,90% 以上的低级脚本攻击会直接跳过你的服务器。
为什么换端口有效
暴露在公网的 22 端口平均每天遭遇 300+ 次暴力破解尝试,这些几乎全是全自动扫描工具发起的。它们不“思考”,只按固定规则扫常见端口。只要你不留 22,也不用 80、443、3306 这类热门端口,大多数脚本就找不到入口。
这不是万能盾牌,但属于成本最低、见效最快的防线——改一行配置,就能过滤掉绝大多数无差别攻击。
选哪个端口号更合适
建议在 1024–65535 范围内选一个不常用、没被其他服务占用的端口。避开以下几类:
- 知名服务端口(如 3389、8080、8443、9000、10000)
- 云平台控制台常拦截的端口(部分厂商默认封 2222、3333、5555)
- 低于 1024 的特权端口(需 root 权限启动,且部分系统策略限制)
推荐用五位随机数,比如 57842 或 42391 —— 不易被猜中,也少有冲突。
具体操作步骤
以主流发行版(Ubuntu 22.04/CentOS 7+/Rocky 9)为例:
- 用已有方式登录服务器,保持至少一个稳定连接不断开
- 编辑配置:
sudo nano /etc/ssh/sshd_config - 找到
#Port 22行,去掉 # 号,并改成你选的端口,例如:Port 57842 - 保存退出,重启服务:
sudo systemctl restart ssh(Ubuntu)或sudo systemctl restart sshd(CentOS/RHEL) - 立即在防火墙放行新端口:
sudo ufw allow 57842/tcp(Ubuntu)或sudo firewall-cmd --permanent --add-port=57842/tcp(RHEL系) - 测试新端口能否连通:
ssh -p 57842 user@your_server_ip,成功后再删掉旧的 Port 22 行(可选,但更干净)
别忘了配套动作
单改端口只是第一步。真正防住暴力破解,还需同步做这几件事:
- 禁用 root 直接登录:
PermitRootLogin no - 启用密钥认证并禁用密码登录:
PasswordAuthentication no - 限制允许登录的用户:
AllowUsers deploy admin - 配合 Fail2ban 自动封禁异常 IP
端口修改本身不加密、不认证,但它把攻击者挡在了第一道门外。和密钥认证、访问控制搭配使用,才能形成真正实用的安全闭环。










