SSH 安全加固清单:从“能用”到“难进”
如果你的服务器对公网开放,SSH 就是第一道大门。现实是:只要端口开着,扫描器和爆破脚本就会一直来敲门。
这篇给你一份偏“实战”的加固清单:不追求花哨,追求稳、可回滚、不把自己锁在门外。
动手前的硬规则(必看)
- 保持一条已登录的 SSH 会话不退出,另一条会话里改配置并测试
- 修改
sshd_config后,先验证配置无误,再 reload - 如果你不确定防火墙规则,先把“允许当前 IP”加进去
1) 只用密钥登录,关掉密码登录
在服务器侧 /etc/ssh/sshd_config 里(示意):
1 | PasswordAuthentication no |
如果你必须短期保留密码(比如有运维同事还没配好),建议至少:
- 给密码设置强度与轮换策略
- 配合 fail2ban 限制爆破
2) 禁止 root 直接登录(最常见高收益项)
1 | PermitRootLogin no |
然后用普通用户登录,通过 sudo 提权。
3) 限制允许登录的用户(白名单)
1 | AllowUsers alice bob |
或者按组:
1 | AllowGroups ssh-users |
4) 端口要不要改?可以,但别当“安全核心”
改端口的意义是减少无脑扫描噪音,不是根本安全手段。
1 | Port 2222 |
如果改了端口:
- 防火墙记得放行新端口
- 旧端口可以保留一段时间做过渡,避免把自己锁死
5) fail2ban:对付暴力破解非常实用
思路是:看到某 IP 短时间内多次失败,就临时封禁。
常见配置目标:
- 失败 5 次封 10 分钟
- 长期恶意 IP 可以更久
具体配置因发行版而异,你的核心目标是:SSH 登录失败不再“无限试错”。
6) 防火墙:默认拒绝,只开需要的
建议策略:
- 只开放 SSH(以及你必要的服务端口)
- 如果你有固定办公 IP,可以只允许该 IP 段访问 SSH
7) 额外加固项(按需)
- 禁用空密码:
1
PermitEmptyPasswords no
- 减少认证次数/缩短超时(降低爆破效率):
1
2MaxAuthTries 3
LoginGraceTime 20 - 开启 2FA(如果你能接受额外复杂度):更安全,但要做好备份码与恢复方案
- 审计与告警:把 SSH 登录事件接到你的告警渠道(最少做到“有人登录我知道”)
8) 修改后如何验证(别靠“感觉”)
1 | # 验证 sshd 配置(不同系统命令可能略有差异) |
然后用“新会话”测试:
- 是否能用密钥登录
- root 是否被禁止
- 非白名单用户是否无法登录
总结
SSH 加固的核心不是“改一个端口”,而是三件事:
- 身份:密钥 +(可选)2FA
- 权限:root 禁止直登、用户白名单
- 对抗:fail2ban + 防火墙减少爆破窗口
做完这些,你的 SSH 大门会从“谁都能敲”变成“敲了也进不来”。
封面与配图来自 Unsplash(免费使用授权)。
- 标题: SSH 安全加固清单:从“能用”到“难进”
- 作者: 星苒鸭
- 创建于 : 2026-02-06 11:00:00
- 更新于 : 2026-03-05 19:20:55
- 链接: https://xingranya.cn/ssh-security-hardening-checklist/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。