在银河麒麟v10上修改ssh默认端口需四步:备份并修改sshd_config启用新端口(如5022)且注释旧端口;重启ssh服务并验证监听;firewalld永久放行新端口;enforcing模式下用semanage添加selinux端口标签;最后测试连接并确认22端口已关闭。

在银河麒麟V10上修改SSH默认端口,是为了避开22端口的高频自动化扫描,降低被暴力试探的风险;但改完不配防火墙或SELinux,新端口连不通,旧端口又没关,等于白改。
备份并修改sshd_config配置文件
第一步永远是备份:执行 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。这一步不能跳,【一旦配置语法出错,sshd可能直接拒绝启动,导致远程连接永久中断】。
用vim打开配置文件:sudo vim /etc/ssh/sshd_config。
搜索 Port,找到类似 #Port 22 的行。把开头的 # 删掉,并把数字改成你选的新端口(比如5022):写成 Port 5022。
强烈建议同时注释掉原22端口:在刚写的那行下方加一行 #Port 22。这样能避免双端口并存带来的策略混乱,也防止后续误开。
重启SSH服务并验证监听状态
执行 sudo systemctl restart ssh。注意服务名是 ssh,不是 sshd——麒麟V10 systemd单元名就是这个。
检查服务是否真跑起来了:sudo systemctl status ssh,确认输出里有绿色的 active (running),且没有红色报错。
验证端口是否监听成功:sudo ss -tuln | grep ':5022'。如果返回空,说明配置没生效或端口被占用,立刻回退到备份文件重试。
放行防火墙中的新端口
麒麟V10默认启用 firewalld,先确认状态:sudo firewall-cmd --state,返回 running 就对了。
永久添加规则:sudo firewall-cmd --permanent --add-port=5022/tcp。
重载规则使生效:sudo firewall-cmd --reload。
验证规则已加载:sudo firewall-cmd --list-ports,输出里必须含 5022/tcp。
处理SELinux端口上下文(仅Enforcing模式需操作)
先查SELinux当前状态:getenforce。若返回 Enforcing,才继续下面步骤。
方法一:添加端口标签
执行 sudo semanage port -a -t ssh_port_t -p tcp 5022。如果提示 command not found,先装工具:sudo apt install policycoreutils-python-utils -y。
方法二:快速验证是否生效
运行 sudo semanage port -l | grep ssh_port_t,输出中必须出现 5022,否则sshd启动时会因权限拒绝绑定端口。
测试连接并禁用旧端口
第一步:用另一台机器测试新端口连通性:ssh -p 5022 user@your-kylin-ip。能成功登录,才算真正走通。
第二步:确认新连接稳定后,回到麒麟V10,再次编辑 /etc/ssh/sshd_config,把 Port 5022 这行保留,把 #Port 22 改成 #Port 22(确保仍是注释状态)。
第三步:重启服务:sudo systemctl restart ssh。
第四步:用 sudo ss -tuln | grep ':22' 检查22端口是否已无监听进程——此时应无任何输出。











