必须依次完成四步:修改sshd_config保留双端口并验证语法、防火墙放行新端口并reload、为新端口添加SELinux上下文(如启用)、云安全组开通对应入方向规则,缺一将导致连接失败。

想把Linux服务器的SSH远程登录端口从默认的22改成其他端口,避免被自动化扫描攻击或绕过网络策略限制,必须按顺序完成配置修改、防火墙放行、SELinux适配和云安全组开通四步操作,漏掉任意一环都会导致连接失败甚至彻底失联。
备份并修改sshd_config配置文件
先用root权限备份原始配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
用nano编辑配置文件:sudo nano /etc/ssh/sshd_config
找到#Port 22这一行,取消注释,并在下方新增一行——【必须保留 Port 22 和新端口两行共存】,例如:
Port 22
Port 22022
新端口号必须在1024–65535范围内且未被占用;改完保存后,立即执行sudo sshd -t验证语法,无任何输出才表示合法。
放行新端口的防火墙规则
方法一(firewalld,适用于CentOS/RHEL/Rocky):
sudo firewall-cmd --permanent --add-port=22022/tcp → sudo firewall-cmd --reload
方法二(UFW,适用于Ubuntu/Debian):
sudo ufw allow 22022/tcp → sudo ufw reload
方法三(iptables,传统方式):
sudo iptables -A INPUT -p tcp --dport 22022 -j ACCEPT → 保存规则:sudo iptables-save > /etc/iptables/rules.v4
注意:只执行allow或add-port不reload,规则不会生效,连接必然失败。
为新端口添加SELinux上下文(仅限启用SELinux的系统)
第一步:确认SELinux状态,运行sestatus,输出为enforcing或permissive才需处理。
第二步:检查当前允许的SSH端口:sudo semanage port -l | grep ssh
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
第三步:添加新端口上下文:sudo semanage port -a -t ssh_port_t -p tcp 22022
如果提示command not found,先安装依赖包:sudo yum install -y policycoreutils-python-utils(RHEL/CentOS)或sudo apt install -y policycoreutils-python-utils(Debian/Ubuntu)
【跳过这步会导致sshd启动时bind: Permission denied,journalctl -u sshd会明确报错】
重启服务并验证监听状态
① 执行平滑重启:sudo systemctl restart sshd(原SSH会话不会断开)
② 检查服务是否正常:sudo systemctl status sshd,确认Active: active (running)
③ 验证端口监听:sudo ss -tulnp | grep :22022,必须看到sshd进程绑定到该端口
④ 测试本地连接:ssh localhost -p 22022,能成功登录即说明服务层已就绪
开通云服务器安全组(阿里云/腾讯云/华为云等)
登录云控制台 → 找到对应ECS实例 → 进入「安全组」→ 「配置规则」
添加一条入方向规则:协议类型 TCP + 端口范围 22022/22022 + 授权对象 0.0.0.0/0(或更严格的IP段)
这一步不可省略——本地telnet 127.0.0.1 22022通 ≠ 外网能连,外网请求在到达服务器前就被云平台拦截了。
最终测试与清理
保持当前SSH会话不断开,在新终端中执行:ssh username@your_server_ip -p 22022
若能成功登录,说明全部配置生效;此时可编辑/etc/ssh/sshd_config,注释或删除Port 22行,再执行sudo systemctl restart sshd

















