修改linux ssh默认端口可降低自动化攻击风险,需依次检查端口占用、修改sshd_config、配置防火墙放行、重启服务并验证连接,全程保持原会话不断开。

修改 Linux SSH 默认端口(22)能有效减少自动化扫描和暴力破解风险,操作本身不难,但需注意顺序和权限细节,否则可能导致无法远程登录。
一、确认新端口未被占用
选一个 1024–65535 范围内的非特权端口(如 2222、5678),先检查是否已被其他服务使用:
-
执行命令:
sudo ss -tuln | grep ':2222'或sudo netstat -tuln | grep ':2222' - 若无输出,说明端口空闲;若有输出,换一个端口再试
- 避免使用常见敏感端口(如 80、443、3306、8080 等),也避开已启用的服务端口
二、修改 SSH 配置文件
编辑主配置文件 /etc/ssh/sshd_config,启用并设置新端口:
-
用 root 或 sudo 打开:
sudo nano /etc/ssh/sshd_config - 找到
#Port 22这一行,取消注释并改为:Port 2222(替换成你选定的端口) - 建议保留 Port 22 一行作为备用(即写两行:
Port 22和Port 2222),测试成功后再删 - 确保
ListenAddress未限制绑定地址(除非有特殊需求),默认留空即可监听所有接口
三、配置防火墙放行新端口
系统防火墙必须允许新端口通信,否则连接会被直接拒绝:
-
UFW(Ubuntu/Debian):
sudo ufw allow 2222/tcp,然后sudo ufw reload -
firewalld(CentOS/RHEL/Rocky):
sudo firewall-cmd --permanent --add-port=2222/tcp,再运行sudo firewall-cmd --reload -
iptables(传统方式):
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT,并保存规则(如sudo iptables-save > /etc/iptables/rules.v4)
四、重启 SSH 服务并验证连接
重启前务必保持当前会话不断开,防止锁死:
-
重启服务:
sudo systemctl restart sshd(或sudo systemctl restart ssh,视发行版而定) -
新开终端窗口,测试新端口连接:
ssh -p 2222 username@your_server_ip - 成功登录后,再回到原会话,可安全删除配置中的
Port 22行,并再次重启sshd - 切勿在仅开启新端口且未验证成功时就关闭旧端口或重启前断开连接










