SSH 服务器配置审计

粘贴 sshd_config 或上传文件。审计完全在浏览器内进行——不上传任何内容——你会得到分数、逐行的问题列表和一份可下载的加固配置。

sshd_config 决定了谁能登录你的服务器、以及怎么登录:root 登录、密码认证、提供哪些加密算法与密钥交换算法、空闲会话保留多久。本工具在浏览器里按 Mozilla OpenSSH 指南与 OpenSSH 10.6 默认值审计你的 sshd_config,给出 0–100 的分数、逐行列出每个问题,并生成一份可下载的加固配置。它理解“首次匹配生效”语义、Match 块和 Include 行,因此首页看着干净,也藏不住 Match 块里的弱配置。生成密钥请用SSH 密钥套件;检查密码是否泄露,请用密码泄露检查;如果密钥不慎写进了配置,泄露密钥扫描器能找到它。配套文章如何加固 SSH 服务器配置用文字讲清了同样的设置。

基线:Mozilla OpenSSH 指南 + OpenSSH 10.6 默认值,核实于 2026-11-13。

最后更新:

最大 200 KB。文件只在浏览器里读取,绝不离开你的设备。

🔒 你的配置只在浏览器里解析,绝不离开你的设备。无需账号、不上传、不调用服务器。

你粘贴的配置会怎样处理

什么都不会离开你的浏览器。配置由本页的 JavaScript 在本地解析:不上传、不调用服务器、不存储、无需账号。这很重要,因为服务器配置属于基础设施细节——主机名、用户名、允许登录的用户和端口——绝不应该粘贴到聊天窗口或服务器端检测器里。关闭页面即丢弃。

这个分数不能证明什么

分数干净不等于安全。它只表示这份文件按这份基线没有被标记的指令——一把弱密钥、一个泄露的凭据、一个未打补丁的 sshd 或缺失的防火墙,仍然可能让一切前功尽弃。

分数差也不等于已被入侵。它是一份按优先级排列的待改清单——先修错误,再修警告。

基线会变。本次审计以 2026-11-13 核实的 Mozilla OpenSSH 指南与 OpenSSH 10.6 默认值为准;今天还算现代的算法,明天可能就被弃用。升级 sshd 后请重新审计。

分数是怎么算出来的

每个错误扣 15 分,每个警告扣 7 分,提示不扣分。Match 块内的问题是有条件的——只适用于匹配该块的会话,因此会列出,但不扣分。四个档位是刻意分得比较粗的:80–100 分为高,60–79 分为中,40–59 分为低,0–39 分为差——分得更细,就会假装配置审计拥有它并不具备的精确度。

审计是怎么工作的

sshd 对每个指令只读一次:对每个关键字,先遇到的值生效,后面的重复值会被静默忽略。本工具会标明生效的那一行,并标记被遮蔽的重复行,因此写在第一行下面的所谓“已修复”行骗不了它。缺失的指令会按 OpenSSH 默认值审计——当默认值本身就很宽松时,缺失绝不算通过,这正是 PasswordAuthentication 成为未动过配置上最常见问题的原因。

Match 块内的指令只适用于匹配其条件的会话,因此其中的问题是有条件的:会连同所在的块一起列出,但不扣分。Include 行会被标记为“未跟随”——被包含的文件从不读取,因此只写在被包含文件里的指令对本次审计不可见。想做完整审计,请粘贴合并后的配置(sshd -T 会打印出解析后的生效配置)。

本工具读的是文件,而不是正在运行的服务器:它看不到 sshd 是否真的在用这份配置、你的密钥有多强,也看不到防火墙或 fail2ban 是否守着端口。只关 PasswordAuthentication 是不够的——如果 PAM 仍能接受密码,密码登录就还开着,请同时检查 KbdInteractiveAuthentication 和你的 PAM 配置。改端口只是障眼法,不是加固:只会记录,绝不计分。

常见问题

为什么 PasswordAuthentication 是最常见的问题?

因为 OpenSSH 的默认值就是 yes:大多数发行版默认开着密码登录,很多运维也从没关过它。关掉它——并检查 KbdInteractiveAuthentication 和 PAM(它们仍可能接受密码)——远比改端口重要,改端口只是把登录提示换了个地方。

我的配置分散在多个 Include 文件里,为什么审计会忽略它们?

本工具在浏览器里运行,读不到你服务器的文件系统,因此 Include 行会被标记为“未跟随”,而不是悄悄跳过。请改用合并后的配置:sshd -T 会打印出解析了全部包含文件后的生效配置,本审计就是为这份文件设计的。

加固后的配置能直接放到服务器上吗?

不能——请先审阅。下载文件会把被标记的指令改成基线推荐值,并把已移除或被遮蔽的行注释掉,但它不知道你的 Match 块、你的用户和你的网络。先用 sshd -t 测试,保持一个会话开着,再开第二个会话测试登录,确认无误后再关闭第一个会话。