Linux修改SSH端口核心步骤是:编辑/etc/ssh/sshd_config中Port配置(如设为2222)、重启sshd服务、放行防火墙(ufw/firewalld)及SELinux端口策略;缺一即导致连接失败,且须保留22端口过渡验证后再停用。

Linux 配置 SSH 远程连接服务并修改端口,核心是编辑配置文件、重启服务、放行防火墙,三步缺一不可。改端口不是只改个数字就完事,漏掉任一环节都可能连不上。
修改 SSH 监听端口
SSH 服务配置文件固定在 /etc/ssh/sshd_config。用 root 权限编辑:
- 执行 sudo nano /etc/ssh/sshd_config(或 vim)
- 找到 #Port 22 这一行,去掉前面的 #,改为 Port 2222(或其他你选的端口,建议 10000–65535 范围)
- 保存退出
注意:不要直接删掉 Port 22 行再新增,而是取消注释并修改值;若想保留 22 端口同时监听新端口,可写两行 Port 22 和 Port 2222,但生产环境不推荐。
重启 SSH 服务并验证状态
配置改完必须重启服务才能生效:
- 执行 sudo systemctl restart sshd(部分系统如 Ubuntu 可能是 ssh,可用 systemctl list-units | grep ssh 确认服务名)
- 检查是否启动成功:sudo systemctl status sshd,看输出中是否为 “active (running)”
- 若失败,运行 sudo journalctl -u sshd -n 50 --no-pager 查最近 50 行日志,常见原因是 SELinux 或端口被占用
开放新端口并处理 SELinux(如启用)
防火墙和 SELinux 是两个最常导致“改了却连不上”的原因:
- 防火墙:若用 ufw,运行 sudo ufw allow 2222/tcp;若用 firewalld,运行 sudo firewall-cmd --permanent --add-port=2222/tcp && sudo firewall-cmd --reload
- SELinux:若系统启用了 SELinux(sestatus 显示 enforcing),需添加端口策略:sudo semanage port -a -t ssh_port_t -p tcp 2222(如未安装 semanage,先 sudo yum install policycoreutils-python-utils 或 sudo apt install policycoreutils-python-utils)
客户端连接与安全加固建议
服务端配好后,客户端需指定端口连接:
- 命令行连接:ssh -p 2222 username@server_ip
- 连接成功后,建议逐步加固:PermitRootLogin no、PasswordAuthentication no(配合密钥登录)、AllowUsers youruser
- 改端口只是基础防护,不能替代密钥认证和最小权限原则


















