在 Ubuntu 云服务器上配置 SSH 和防火墙是保障服务器安全的基础步骤。以下是标准操作流程,基于 Ubuntu 20.04/22.04(使用 ufw 防火墙):
🔐 一、配置 SSH 服务
1. 安装 OpenSSH 服务端(如未安装)
sudo apt update
sudo apt install openssh-server
2. 修改 SSH 配置文件(关键安全加固)
编辑 /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
建议修改以下参数(注释前加 # 表示默认启用,取消注释并调整值):
Port 2222 # 改为非标准端口(如 2222),减少暴力破解风险
PermitRootLogin no # 禁止 root 直接登录(必须用普通用户 + sudo)
PasswordAuthentication no # 禁用密码登录(推荐仅用密钥认证)
PubkeyAuthentication yes # 启用公钥认证
AllowUsers your_username # 限制允许登录的用户名(替换为实际用户名)
X11Forwarding no # 禁用 X11 转发(除非需要图形界面)
UsePAM yes # 保持 PAM 支持(通常保留)
✅ 重要提示:
- 若改用新端口(如 2222),务必先测试连接再重启服务,避免被锁!
- 禁用密码登录后,请确保已生成并部署 SSH 密钥对(见下文)。
3. 生成并部署 SSH 密钥(推荐方式)
在本地电脑执行:
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或使用 rsa-4096: ssh-keygen -t rsa -b 4096
将公钥复制到服务器:
ssh-copy-id -p 2222 your_username@your_server_ip
或手动追加:
cat ~/.ssh/id_ed25519.pub | ssh your_username@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
4. 重启 SSH 服务
sudo systemctl restart sshd
sudo systemctl status sshd # 检查是否正常运行
5. 测试新配置
在新终端窗口尝试连接(不要关闭当前会话!):
ssh -p 2222 your_username@your_server_ip
✅ 成功后再关闭旧会话。
🛡️ 二、配置防火墙(UFW)
Ubuntu 默认使用 ufw(Uncomplicated Firewall)。
1. 启用 UFW
sudo ufw enable
# 首次会提示确认,输入 y
2. 设置默认策略(拒绝入站,允许出站)
sudo ufw default deny incoming
sudo ufw default allow outgoing
3. 开放必要端口
- 若使用自定义 SSH 端口(如 2222):
sudo ufw allow 2222/tcp - 如需 Web 服务(示例):
sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS - 其他服务按需添加(如数据库、Redis 等,切勿全开!)
⚠️ 注意:必须先放行 SSH 端口,再启用 UFW,否则可能无法远程连接!
4. 查看状态与规则
sudo ufw status verbose
输出示例:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
2222/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5. 紧急恢复方案(防误操作)
若误封 SSH 导致失联:
- 通过云服务商控制台(如阿里云、腾讯云、AWS)的 VNC/串口登录 进入系统;
- 临时关闭防火墙:
sudo ufw disable - 重新配置后再次启用。
🔒 三、额外安全建议
| 措施 | 说明 |
|---|---|
| Fail2Ban | 自动封禁多次失败登录的 IP:sudo apt install fail2ban |
| 定期更新 | sudo apt update && sudo apt upgrade -y |
| 监控日志 | sudo tail -f /var/log/auth.log 实时查看 SSH 登录记录 |
| 禁用空密码 | 确保所有账户有强密码(即使不用密码登录也建议设置) |
完成以上步骤后,您的 Ubuntu 服务器将具备基础的 SSH 安全访问能力和防火墙防护。如有特定场景(如多用户、容器环境、K8s 节点等),可进一步细化策略。需要我提供自动化脚本或 Docker 集成方案吗?
PHPWP博客