修改 SSH 默认端口指南
一、背景与目的
- 安全需求:默认 SSH 端口(22)易被暴力扫描,修改为非标准端口可提升安全性。
- 适用场景:Ubuntu 服务器(如腾讯云、阿里云等云服务器)。
二、完整操作流程
1. 修改 SSH 配置文件
sudo nano /etc/ssh/sshd_config
- 找到并修改 Port 行(取消注释或新增)
Port 2222 # 自定义非标准端口(1024-65535)
- 保存退出:Ctrl+O 保存,Ctrl+X 退出。
2. 配置防火墙(UFW)
sudo ufw allow 2222/tcp # 允许新端口
sudo ufw delete allow ssh # 删除旧的 22 端口规则(可选)
sudo ufw reload # 重新加载规则
3. 腾讯云安全组配置
- 登录控制台 → 安全组 → 添加规则: 协议:TCP端口范围:2222来源:0.0.0.0/0(测试时)或指定 IP。
4. 重启 SSH 服务
sudo systemctl restart ssh # 常规重启
# 若失败,尝试强制重启:
sudo systemctl stop ssh
sudo systemctl start ssh
三、常见问题与排查
1. 问题:SSH 仍监听 22 端口
- 现象:ss -tulpn | grep ssh 显示 *:22。
- 可能原因: 配置文件未生效或有语法错误。ssh.socket 单元干扰(Ubuntu 特有的 socket 激活机制)。
- 解决方法:
sudo systemctl disable --now ssh.socket # 禁用 socket 单元
sudo systemctl enable --now ssh.service # 启用传统服务
sudo systemctl mask ssh.socket # 永久禁用 socket
2. 问题:连接被拒绝(Connection refused)
- 现象:本地 telnet 服务器IP 2222 失败。
- 排查步骤: 服务器端检查:sudo ss -tulpn | grep 2222 # 确认端口监听 sudo ufw status # 检查防火墙规则 云平台检查:安全组是否放行 2222 端口。本地测试:尝试其他工具(如 PowerShell 的 Test-NetConnection)。
3. 问题:AppArmor 限制
- 现象:SSH 配置正确,但无法监听新端口。
- 解决方法:
sudo systemctl stop apparmor # 临时禁用测试
sudo systemctl restart ssh # 重启服务
# 若成功,调整 AppArmor 配置:
sudo nano /etc/apparmor.d/usr.sbin.sshd
# 添加:
network tcp,
sudo systemctl restart apparmor
四、验证与测试
1. 服务器端验证
sudo ss -tulpn | grep ssh # 应显示 *:2222
sudo systemctl status ssh # 服务应正常运行
2. 本地连接测试
- Windows PowerShell:
telnet 服务器IP 2222
# 或
Test-NetConnection -ComputerName 服务器IP -Port 2222
- SSH 连接:
ssh ubuntu@服务器IP -p 2222
五、注意事项
- 避免锁定自己:修改端口后,确保新端口规则生效(安全组 + UFW)再关闭旧端口。
- 用户权限:腾讯云默认用户是 ubuntu,若需使用 root,需在 sshd_config 中启用 PermitRootLogin yes。
- 配置文件检查:使用 sudo sshd -t 验证配置语法。
六、终极解决方案(若所有方法失败)
sudo apt purge openssh-server # 卸载 SSH
sudo apt install openssh-server # 重新安装
# 重新配置 Port 2222
sudo systemctl restart ssh
总结
修改 SSH 端口需同时关注 配置文件、防火墙 和 云平台安全组,并排查可能的 服务冲突(如 ssh.socket)和 安全限制(如 AppArmor)。通过本文步骤,可顺利完成端口修改并解决常见问题。