SSH 安全加固清单:从“能用”到“难进”

SSH 安全加固清单:从“能用”到“难进”

星苒鸭 Lv4

如果你的服务器对公网开放,SSH 就是第一道大门。现实是:只要端口开着,扫描器和爆破脚本就会一直来敲门。

这篇给你一份偏“实战”的加固清单:不追求花哨,追求稳、可回滚、不把自己锁在门外

锁不是为了绝对安全,而是为了提高攻击成本

动手前的硬规则(必看)

  • 保持一条已登录的 SSH 会话不退出,另一条会话里改配置并测试
  • 修改 sshd_config 后,先验证配置无误,再 reload
  • 如果你不确定防火墙规则,先把“允许当前 IP”加进去

1) 只用密钥登录,关掉密码登录

在服务器侧 /etc/ssh/sshd_config 里(示意):

1
2
PasswordAuthentication no
PubkeyAuthentication yes

如果你必须短期保留密码(比如有运维同事还没配好),建议至少:

  • 给密码设置强度与轮换策略
  • 配合 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
    2
    MaxAuthTries 3
    LoginGraceTime 20
  • 开启 2FA(如果你能接受额外复杂度):更安全,但要做好备份码与恢复方案
  • 审计与告警:把 SSH 登录事件接到你的告警渠道(最少做到“有人登录我知道”)

8) 修改后如何验证(别靠“感觉”)

1
2
3
4
5
# 验证 sshd 配置(不同系统命令可能略有差异)
sshd -t

# 重载配置(不中断现有连接更安全)
systemctl reload ssh

然后用“新会话”测试:

  • 是否能用密钥登录
  • 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 进行许可。
评论