在Linux系统中,修改SSH默认端口(22)是提升服务器安全性的基础操作之一,默认端口易受自动化攻击工具扫描,通过更换为非标准端口可显著降低被恶意尝试的风险,以下是修改SSH端口的详细步骤及注意事项,操作过程需谨慎执行,避免因配置错误导致无法远程连接。

修改SSH配置文件
SSH服务的端口配置主要存储在/etc/ssh/sshd_config文件中,使用文本编辑器(如vi或nano)以root权限打开该文件:
sudo vi /etc/ssh/sshd_config
在文件中找到#Port 22这一行(默认被注释),取消注释并将22修改为目标端口(例如2222,建议选择1024-65535之间的未常用端口,避免与系统服务冲突),若需同时支持多个端口,可新增一行Port 端口号,
Port 2222 Port 2223 # 可选:多端口配置
注意:确保新端口未被其他服务占用,可通过netstat -tuln | grep 端口号或ss -tuln | grep 端口号检查。
配置防火墙规则
修改端口后,需更新防火墙策略以允许新端口的流量访问,根据系统使用的防火墙工具,执行以下操作:

使用iptables(CentOS 7之前版本)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT # 允许2222端口 sudo iptables -A INPUT -p tcp --dport 2223 -j ACCEPT # 若配置多端口,需分别添加 sudo service iptables save # 保存规则
使用firewalld(CentOS 7+/RHEL 7+)
sudo firewall-cmd --permanent --add-port=2222/tcp # 添加2222端口(永久生效) sudo firewall-cmd --permanent --add-port=2223/tcp # 多端口配置 sudo firewall-cmd --reload # 重新加载防火墙
使用ufw(Ubuntu/Debian)
sudo ufw allow 2222/tcp # 允许2222端口 sudo ufw allow 2223/tcp # 多端口配置 sudo ufw reload # 重启防火墙
重启SSH服务
保存配置文件并退出编辑器后,重启SSH服务使新端口生效:
sudo systemctl restart sshd # systemd系统(CentOS 7+/Ubuntu 16.04+) # 或 sudo service ssh restart # init系统(CentOS 6及以下)
为确保服务正常启动,可检查SSH服务状态:
sudo systemctl status sshd
测试新端口连接
在执行上述操作前,建议保持当前SSH会话开启,避免因配置错误导致无法远程登录,使用新端口通过SSH客户端连接服务器:
ssh -p 2222 username@服务器IP
若连接成功,说明端口修改成功;若失败,需检查防火墙规则、SSH配置文件语法及端口占用情况。

安全加固建议
- 避免使用常见端口:如22、3389等易被攻击的端口,建议选择随机高端口。
- 限制访问IP:通过防火墙或SSH配置文件(
AllowUsers、AllowHosts)限制允许连接的客户端IP。 - 禁用root登录:在
sshd_config中设置PermitRootLogin no,减少安全风险。 - 定期检查日志:通过
/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS)监控SSH访问记录。
常见问题处理
若修改后无法连接,可能原因包括:
- 防火墙未开放端口:检查防火墙规则并确保端口已允许。
- SSH配置语法错误:使用
sshd -t测试配置文件语法,修正错误后重启服务。 - 端口被占用:更换其他端口并重新检查。
- SELinux启用:若系统开启SELinux,需执行
semanage port -a -t ssh_port_t -p tcp 2222添加端口上下文。
通过以上步骤,即可完成Linux SSH端口的修改,操作前务必做好备份,确保在测试环境验证无误后再应用到生产服务器,以维护远程连接的稳定性与安全性。
















