四步完成ssh端口切换:修改sshd_config中port为新端口号(如2222)、配置防火墙放行该端口、selinux环境下用semanage添加ssh_port_t标签、重启sshd并验证连接成功后再停用原22端口。

直接改配置、开防火墙、适配 SELinux(如启用)、验证再切换,四步到位,不复杂但容易忽略细节。
修改 /etc/ssh/sshd_config 配置
用 root 权限编辑主配置文件:sudo nano /etc/ssh/sshd_config。找到 Port 22 这一行(可能被注释为 #Port 22),去掉 # 号,并把 22 改成你选的端口号,比如 Port 2222。注意:不要删掉原 Port 行再另起一行,避免出现多条 Port 指令;只保留一条有效设置。改完保存退出(nano 中按 Ctrl+O 回车,Ctrl+X 退出)。
开放新端口的防火墙规则
系统防火墙默认只放行 22 端口,新端口必须手动加白:
- firewalld(CentOS/RHEL/Fedora):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload - ufw(Ubuntu/Debian):
sudo ufw allow 2222/tcp
sudo ufw reload - iptables(较老系统):
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
再执行对应持久化命令,如 sudo netfilter-persistent save
SELinux 环境下补充端口上下文
若 sestatus 显示 SELinux 为 enforcing 模式,必须给新端口打上 ssh_port_t 标签,否则 sshd 启动会失败:
- 先确认是否安装了管理工具:sudo yum install policycoreutils-python-utils(RHEL/CentOS)或 sudo apt install policycoreutils-python-utils(新版 Debian/Ubuntu)
- 添加端口:sudo semanage port -a -t ssh_port_t -p tcp 2222
- 验证是否成功:sudo semanage port -l | grep ssh,输出中应含 2222
重启服务并验证连接
别急着关 22 端口,先确保新端口真正可用:
- 重启 SSH:sudo systemctl restart sshd
- 检查监听:sudo ss -tlnp | grep :2222 或 sudo netstat -tuln | grep :2222
- 新开终端测试连接:ssh username@server_ip -p 2222
- 连通后,再回到配置文件注释掉或删除
Port 22行,重启 sshd 完成切换











