在Linux系统中,修改SSH服务的默认端口号22是提升服务器安全性的常见操作,可有效防止自动化扫描和暴力破解攻击,以下是详细的修改步骤及注意事项,涵盖不同Linux发行版的操作差异。
修改SSH默认端口的操作步骤
备份SSH配置文件
修改前务必备份原始配置文件,避免操作失误导致服务异常,以CentOS/Ubuntu为例,执行以下命令:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
编辑SSH配置文件
使用vi
或nano
编辑器打开SSH主配置文件:
sudo vi /etc/ssh/sshd_config
找到以下行(可能被注释,需取消):
#Port 22
将其修改为自定义端口(建议选择1024以上的端口,避免与系统服务冲突,例如2222
),并确保新端口未被占用(可通过netstat -tuln | grep 端口号
检查),若需同时保留22端口供临时测试,可新增一行:
Port 22 Port 2222
保存文件后退出(vi
中按wq
)。
配置防火墙规则
不同Linux发行版的防火墙工具不同,需分别设置允许新端口的访问:
-
CentOS (使用firewalld):
sudo firewall-cmd --permanent --add-port=2222/tcp # 添加永久规则 sudo firewall-cmd --reload # 重载防火墙
-
Ubuntu (使用ufw):
sudo ufw allow 2222/tcp # 允许2222端口 sudo ufw reload # 重载防火墙
下表总结了不同发行版的防火墙配置命令差异:
发行版 | 防火墙工具 | 添加端口命令 | 重载规则命令 |
---|---|---|---|
CentOS 7+ | firewalld | firewall-cmd --permanent --add-port=端口号/tcp |
firewall-cmd --reload |
Ubuntu 18.04+ | UFW | ufw allow 端口号/tcp |
ufw reload |
重启SSH服务
使配置生效,重启SSH服务:
sudo systemctl restart sshd # CentOS/RHEL sudo systemctl restart ssh # Ubuntu/Debian
验证修改结果
- 检查端口监听状态:
netstat -tuln | grep 2222 # 应显示LISTEN状态
- 测试新端口连接:
在本地终端使用新端口远程登录:ssh -p 2222 username@服务器IP
若连接成功,说明修改成功;若失败,检查防火墙规则、SSH配置文件语法(
sshd -t
)及SELinux设置(CentOS需执行sudo setsebool -P ssh_port_t 1
)。
注意事项
- 端口选择:避免使用1-1024的特权端口及常见服务端口(如80、443),防止冲突。
- 避免锁 out:修改前确保有其他方式登录服务器(如控制台),或先保留22端口测试,确认无误后再关闭22端口。
- SELinux配置:若开启SELinux,需执行
semanage port -a -t ssh_port_t -p tcp 2222
添加新端口标签。
相关问答FAQs
Q1:修改SSH端口后无法连接,可能的原因有哪些?
A:常见原因包括:① 防火墙未开放新端口;② SSH配置文件语法错误(可通过sshd -t
检查);③ SELinux阻止新端口访问(需执行semanage port
添加端口);④ 服务器安全组(如云服务器ECS/VPC)未开放新端口,建议依次排查以上项,并使用telnet IP 端口号
测试端口连通性。
Q2:是否可以同时监听多个SSH端口?
A:可以,在/etc/ssh/sshd_config
中添加多行Port
指令即可,
Port 22 Port 2222 Port 8022
重启SSH服务后,客户端可通过任意指定端口连接,但需注意,每增加一个端口都需在防火墙和安全组中开放相应规则,避免安全风险。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22096.html