From b9ee3898e94ca00104f99d17f20c46cedad1374f Mon Sep 17 00:00:00 2001 From: xuans Date: Thu, 15 Oct 2026 23:33:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=9B=9E=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E6=8C=87=E7=BA=B9=E9=85=8D=E7=BD=AE=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在服务器配置页面增加可见的主机指纹获取教程和安全提示,并同步完善 SSH 配置说明。 --- doc/SSH密钥配置指南.md | 32 ++++++++++- frontend/src/views/Dashboard/ServerModal.css | 59 ++++++++++++++++++++ frontend/src/views/Dashboard/ServerModal.vue | 25 +++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/doc/SSH密钥配置指南.md b/doc/SSH密钥配置指南.md index 0062df0..bf08f4b 100644 --- a/doc/SSH密钥配置指南.md +++ b/doc/SSH密钥配置指南.md @@ -14,6 +14,36 @@ 保存服务器配置后,Scert 只使用受保护的密码凭据建立 SSH 连接,并校验服务器主机指纹。密码不会在页面回显、日志中输出或作为命令参数写入。 +## 主机指纹获取教程 + +服务器配置页面的“服务器 SHA256 指纹”用于校验 SSH 主机身份。它不是 HTTPS 证书指纹、SSH 登录密码或 SSH 公钥文件内容,只填写命令输出中以 `SHA256:` 开头的完整值。 + +### 通过服务器控制台获取 + +优先在云厂商控制台、物理控制台或已经通过可信渠道核验的 SSH 会话中执行: + +```bash +ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256 +``` + +如果服务器没有 ED25519 主机密钥,再执行: + +```bash +ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub -E sha256 +``` + +复制输出中以 `SHA256:` 开头的完整值,例如 `SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd`。不要复制算法名称、服务器地址或括号中的说明。 + +### 通过已核验的管理机查看 + +管理机可以使用以下命令查看当前 SSH 服务提供的 ED25519 指纹: + +```bash +ssh-keyscan -t ed25519 -p 22 服务器地址 2>/dev/null | ssh-keygen -lf - -E sha256 +``` + +`ssh-keyscan` 的结果只能作为查找工具,不能单独作为信任依据。首次配置或指纹发生变化时,必须再通过云厂商控制台、服务器本地控制台或其他可信运维渠道核对;核对不一致时应停止配置,不要关闭主机指纹校验或直接重试连接。 + ## 明确禁止的操作 - 不要在 Scert 中录入 SSH 私钥或公钥。 @@ -32,4 +62,4 @@ - 服务器密码只通过受保护的凭据存储保存,不提交到 Git、脚本、日志或工单。 - 生产服务器应关闭 SSH 公钥认证,使用密码唯一认证策略。 -- Scert 管理服务和数据库不直接暴露公网,远程管理入口应通过 Nginx 的 `80/443` 反代访问。 \ No newline at end of file +- Scert 管理服务和数据库不直接暴露公网,远程管理入口应通过 Nginx 的 `80/443` 反代访问。 diff --git a/frontend/src/views/Dashboard/ServerModal.css b/frontend/src/views/Dashboard/ServerModal.css index c921bc4..1b80be3 100644 --- a/frontend/src/views/Dashboard/ServerModal.css +++ b/frontend/src/views/Dashboard/ServerModal.css @@ -116,6 +116,65 @@ min-height: 82px; } +.server-modal .fingerprint-guide { + grid-column: 1 / -1; + margin: 2px 0 10px; + padding: 12px 14px; + border: 1px solid #d8e4f2; + border-radius: 12px; + color: #40526d; + background: #f7faff; + font-size: 12px; + line-height: 1.65; +} + +.server-modal .fingerprint-guide summary { + color: #234f89; + font-size: 13px; + font-weight: 800; + cursor: pointer; +} + +.server-modal .fingerprint-guide summary::marker { + color: #315faa; +} + +.server-modal .fingerprint-guide-body { + padding-top: 8px; +} + +.server-modal .fingerprint-guide-body p { + margin: 0 0 8px; +} + +.server-modal .fingerprint-guide-body ol { + margin: 0 0 8px; + padding-left: 20px; +} + +.server-modal .fingerprint-guide-body li { + margin: 4px 0; +} + +.server-modal .fingerprint-guide code { + display: inline-block; + margin: 2px 3px; + padding: 1px 5px; + border-radius: 5px; + color: #1f477e; + background: #eaf1fb; + font-family: Consolas, "SFMono-Regular", monospace; + font-size: 11px; + overflow-wrap: anywhere; +} + +.server-modal .fingerprint-guide-warning { + padding: 8px 10px; + border-left: 3px solid #d48b32; + color: #77551f; + background: #fff8eb; +} + @media (max-width: 900px) { .server-modal form { grid-template-columns: repeat(2, minmax(0, 1fr)); diff --git a/frontend/src/views/Dashboard/ServerModal.vue b/frontend/src/views/Dashboard/ServerModal.vue index edef6cf..396eaf9 100644 --- a/frontend/src/views/Dashboard/ServerModal.vue +++ b/frontend/src/views/Dashboard/ServerModal.vue @@ -116,6 +116,31 @@ const { type="text" placeholder="SHA256:..." /> +
+ 指纹配置教程 +
+

+ 这里填写的是 SSH 主机密钥指纹,不是 HTTPS 证书指纹,也不是 SSH 登录密码。保存后,Scert 只会连接指纹匹配的服务器。 +

+
    +
  1. + 优先在服务器控制台或已核验的 SSH 会话中执行: + ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256 +
  2. +
  3. + 如果服务器没有 ED25519 主机密钥,再执行: + ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub -E sha256 +
  4. +
  5. + 复制输出中以 SHA256: 开头的完整值,例如 + SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd,不要复制算法名称、主机地址或括号。 +
  6. +
+

+ 不要只相信网络扫描结果:请通过云厂商控制台、服务器本地控制台或其他可信渠道核对。指纹不一致时停止配置,不要关闭主机指纹校验或直接重试连接。 +

+
+