需修改sshd_config文件端口、重启ssh服务、配置防火墙放行、设置selinux端口上下文,并测试连接后禁用22端口;具体包括备份配置、编辑port值、firewalld/ufw放行、semanage添加端口标签及新端口连接验证。

如果您在麒麟OS中运行SSH服务,但希望避免使用默认的22端口以降低自动化扫描风险,则需修改sshd_config配置文件并同步调整系统级访问控制策略。以下是实施此变更的具体方法:
一、备份并编辑SSH主配置文件
修改前保留原始配置可防止因语法错误导致SSH服务不可用,确保远程连接不中断。操作前必须完成备份,再对核心配置进行编辑。
1、执行备份命令:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2、使用vim打开配置文件:sudo vim /etc/ssh/sshd_config
3、定位到包含#Port 22的行,删除开头的#符号,并将数值更改为所需端口号(如2222):Port 2222
4、若需保留22端口作为过渡,可在该行下方新增一行:Port 22
5、保存退出:按Esc键后输入:wq回车
二、重启SSH服务并验证端口监听状态
配置变更仅在服务重载后生效,必须通过systemctl触发完整重启,并确认新端口已进入LISTEN状态。
1、执行重启命令:sudo systemctl restart sshd
2、检查服务运行状态:sudo systemctl status sshd,确认输出含active (running)
3、验证端口监听情况:sudo ss -tuln | grep ':2222',应返回含sshd进程的监听条目
三、放行防火墙中的新SSH端口
麒麟OS默认启用firewalld或ufw,未显式放行的新端口会被拦截,必须添加对应规则才能接受外部连接请求。
1、判断当前防火墙类型:sudo firewall-cmd --state(返回running则为firewalld)或sudo ufw status verbose
2、若为firewalld,执行永久放行:sudo firewall-cmd --permanent --add-port=2222/tcp
3、重载firewalld规则:sudo firewall-cmd --reload
4、若为ufw,执行放行并重载:sudo ufw allow 2222/tcp && sudo ufw reload
四、处理SELinux端口上下文限制
在启用了SELinux的麒麟OS版本中,非标准端口默认无ssh_port_t标签,会导致sshd启动失败或连接被拒绝。
1、检查SELinux状态:getenforce,若返回Enforcing则需配置端口上下文
2、添加新端口至SELinux策略:sudo semanage port -a -t ssh_port_t -p tcp 2222
3、如提示command not found,先安装工具包:sudo apt install policycoreutils-python-utils -y
4、确认添加成功:sudo semanage port -l | grep ssh_port_t,输出应含2222
五、测试新端口连接并禁用旧端口(可选)
在确保新端口可用前,不得关闭当前会话;成功验证后,可移除默认端口以提升安全性。
1、新开终端执行连接测试:ssh username@server_ip -p 2222,替换username与server_ip
2、登录成功后,再次编辑/etc/ssh/sshd_config,注释或删除Port 22行
3、保存后重启服务:sudo systemctl restart sshd
4、再次执行ss -tuln | grep ':22',确认无sshd监听22端口











