修改ssh端口需编辑/etc/ssh/sshd_config文件,新增port 2222等非默认端口行(每端口一行),保留原port 22可双端口监听;重启sshd服务后,须在firewalld/iptables及云平台安全组中放行新端口,并用ssh -p 2222连接。

修改 /etc/ssh/sshd_config 中的 Port 配置项
SSH 服务监听的端口由 sshd_config 文件里的 Port 指令控制,不是改防火墙或客户端参数就能生效。直接编辑该文件:
- 用
sudo nano /etc/ssh/sshd_config打开配置文件 - 找到以
#Port 22开头的行(注意是带井号注释的那行) - 在它下面新增一行:
Port 2222(换成你想要的非特权端口,如2222、2223等) - 不要删掉原有
Port 22行——除非你明确想禁用 22 端口;保留它,就等于同时监听两个端口
多个端口写法是每行一个 Port,比如:
Port 22 Port 2222 Port 2223
不是写成 Port 22 2222,那样会报错。
重启 sshd 服务并验证监听状态
改完配置不重启,新端口不会生效;但重启失败会导致 SSH 连接中断,务必留好备用通道(比如本地终端或控制台)。
- 执行
sudo systemctl restart sshd(Kali/Ubuntu/CentOS 7+ 推荐) - 检查是否成功启动:
sudo systemctl status sshd,确认状态为active (running) - 验证端口监听:
sudo ss -tlnp | grep ':22\|:2222',能看到对应端口和sshd进程才表示生效 - 如果
ss不可用,用sudo netstat -tlnp | grep sshd
注意:systemctl restart sshd 失败时常见原因是语法错误(比如多空格、拼错 Port)、端口被占用,或 SELinux 限制(CentOS/RHEL 上需额外处理)。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
开放防火墙中的新端口
即使 sshd 监听了 2222,若防火墙没放行,外网仍连不上。
- firewalld 用户:
sudo firewall-cmd --permanent --add-port=2222/tcp,再sudo firewall-cmd --reload - iptables 用户:
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT,然后保存规则(如sudo iptables-save > /etc/iptables/rules.v4) - 云服务器(阿里云、腾讯云等):必须在安全组里手动添加入方向规则,协议 TCP,端口
2222
别漏掉云平台的安全组——这是最常被忽略的一环,本地测试通了但外网连不上,八成卡在这儿。
用 ssh -p 连接非默认端口
客户端连接时,必须显式指定端口,否则默认走 22。
- 命令格式:
ssh username@host_ip -p 2222 - 如果用户名和当前本地一致,可省略
username@,写成ssh host_ip -p 2222 - 连接失败时先检查错误信息:
ssh: connect to host xxx port 2222: Connection refused表示服务没监听或防火墙拦了;Connection timed out更可能是网络或安全组问题 - 别把
-p和端口转发参数-L/-R混用——-p是连接目标 SSH 服务的端口,不是转发用的
改端口本身不提升安全性,只是降低被自动化扫描命中概率;真正关键的是关密码登录、用密钥、限制用户,这些在 sshd_config 里配好后,记得重启服务才能落地。










