为什么要加固 SSH
SSH 是管理 DMIT 云服务器的主要入口。默认配置虽然可用,但存在安全隐患:密码登录易被暴力破解,默认端口 22 会吸引大量扫描流量。本文介绍从基础到进阶的 SSH 安全加固方法。
所有操作需通过 SSH 登录后执行。建议在修改配置前先创建快照,以便回滚。
第一步:使用 SSH Key 登录
SSH Key 比密码更安全——密钥长度通常为 2048-4096 位,暴力破解几乎不可能。
生成密钥对
在本地机器上生成(不要在服务器上):
ssh-keygen -t ed25519 -C "your_email@example.com"
推荐使用 ed25519 算法(更短、更快、更安全)。如果需要兼容旧系统,使用 RSA:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
上传公钥到服务器
ssh-copy-id root@<server_ip>
或手动将公钥内容追加到服务器的 ~/.ssh/authorized_keys 文件中。
验证 Key 登录
上传后,开一个新终端测试 Key 登录是否成功:ssh root@<server_ip>。确认无需输入密码即可登录后,再进行下一步。
第二步:禁用密码登录
确认 Key 登录正常后,禁用密码登录。编辑 /etc/ssh/sshd_config:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
重启 SSH 服务:systemctl restart sshd
注意:修改后不要关闭当前 SSH 会话——开一个新终端测试登录,确保配置正确后再关闭旧会话。
第三步:修改默认端口
将 SSH 端口从默认的 22 改为其他端口(如 2222),可以减少大量自动扫描攻击。
# 编辑 /etc/ssh/sshd_config
Port 2222
修改后需要同时在防火墙中放行新端口:
# iptables
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# ufw
ufw allow 2222/tcp
重启 SSH 服务后,使用新端口连接:ssh -p 2222 root@<server_ip>
第四步:限制登录用户
禁止 root 直接 SSH 登录,改用普通用户 + sudo:
# 创建普通用户
adduser deploy
usermod -aG sudo deploy
# 上传 Key 到 deploy 用户后,编辑 sshd_config
PermitRootLogin no
AllowUsers deploy
第五步:配置防火墙
仅放行必要端口。以 ufw 为例:
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp # SSH(新端口)
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
如果使用 IPv6,确保 ufw 的 IPv6 规则也已配置(编辑 /etc/default/ufw 设置 IPV6=yes)。
第六步:安装 fail2ban
fail2ban 可以自动封禁多次失败登录的 IP:
apt update && apt install fail2ban
systemctl enable fail2ban
systemctl start fail2ban
默认配置即可工作(5 次失败后封禁 10 分钟)。自定义配置在 /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
其他安全建议
- 定期更新系统:
apt update && apt upgrade,安装安全补丁 - 禁用不必要的服务:用
ss -tlnp查看监听端口,关闭不需要的 - 使用 SSH Agent Forwarding:避免在服务器上存储私钥
- 设置登录通知:在
~/.bashrc中添加登录通知脚本 - 审计日志:定期查看
/var/log/auth.log
检查清单
| 项目 | 状态 |
|---|---|
| SSH Key 登录 | ✓ 已配置 |
| 密码登录已禁用 | ✓ PasswordAuthentication no |
| 默认端口已修改 | ✓ 非 22 端口 |
| root 登录已禁用 | ✓ PermitRootLogin no |
| 防火墙已配置 | ✓ 仅放行必要端口 |
| fail2ban 已安装 | ✓ 自动封禁 |
更多 DMIT 使用指南可参考新手指南与《IPv6 配置教程》。
本文核对日期:2026-08-18。SSH 配置细节以你的系统版本为准。