修改SSH默认端口是增强Linux服务器安全性的基础措施,需依次修改sshd_config端口、配置防火墙放行、SELinux添加端口标签、重启SSH服务并验证监听、最后禁用22端口。

如果您希望增强Linux服务器的SSH访问安全性,修改默认的22端口是基础且有效的手段之一。以下是具体可行的操作步骤:
一、修改SSH配置文件中的端口设置
SSH服务的监听端口由sshd_config文件控制,直接编辑该文件可指定新的端口号。需确保新端口未被其他服务占用,并具备相应权限写入配置。
1、使用root权限打开SSH主配置文件:sudo nano /etc/ssh/sshd_config。
2、查找包含Port 22的行,取消其注释(删除行首的#),并将22替换为期望的新端口号,例如Port 2222。
3、保存并退出编辑器(在nano中按Ctrl+O回车确认保存,Ctrl+X退出)。
二、配置防火墙放行新端口
系统防火墙可能仍拦截非22端口的入站连接,必须显式添加规则允许新SSH端口通信,否则会导致连接中断。
1、若使用ufw,执行:sudo ufw allow 2222/tcp(将2222替换为实际设定的端口)。
2、若使用firewalld,执行:sudo firewall-cmd --permanent --add-port=2222/tcp,随后运行sudo firewall-cmd --reload使规则生效。
3、若使用iptables,执行:sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT,并保存规则(如使用iptables-save重定向至/etc/iptables/rules.v4)。
三、禁用SELinux对新端口的限制(如启用SELinux)
SELinux默认仅允许sshd绑定到标注为ssh_port_t类型的端口,自定义端口需手动添加上下文标签,否则sshd启动失败或拒绝监听。
1、检查SELinux状态:sestatus,若为enabled则继续操作。
2、查询当前SSH端口类型:sudo semanage port -l | grep ssh。
3、为新端口添加类型标签:sudo semanage port -a -t ssh_port_t -p tcp 2222(2222替换为实际端口)。
四、重启SSH服务并验证监听状态
配置变更后必须重启sshd进程以加载新设置,同时需确认服务确实在新端口上监听,避免因配置错误导致失连。
1、重启SSH服务:sudo systemctl restart sshd(Debian/Ubuntu)或sudo systemctl restart sshd(RHEL/CentOS)。
2、检查监听端口:sudo ss -tlnp | grep :2222,应显示sshd进程绑定至该端口。
3、在另一终端尝试连接:ssh -p 2222 username@server_ip,确认可成功建立会话。
五、移除旧端口监听(可选但推荐)
保留Port 22与新端口共存虽便于过渡,但长期启用会削弱端口更换的安全收益。确认新端口稳定可用后,应彻底停用22端口监听。
1、再次编辑/etc/ssh/sshd_config,删除或注释掉所有Port 22行(包括备份行或重复行)。
2、确保配置文件中仅存在一行有效Port指令,指向新端口。
3、再次执行sudo systemctl restart sshd,并用ss -tlnp | grep :22验证22端口不再监听。










