Files
nyaterm/docs-site/docs/guide/security.md
T
KangandClaude Opus 5 e18cb3902e docs: cut the template phrasing and the authoring notes
The migrated prose leaned on a small set of constructions and repeated them
until they stopped carrying information. Across ~3.7k lines the source had 78
uses of "适合", 63 of "如果你", and 34 contrastive "而不是" clauses, most of
them attached to bullet lists that restated the feature name.

What changed:
- Replaced the "适合场景 / 适合:" tail hanging off nearly every section with
  either a plain sentence or nothing. "适合" is now 0, "如果你" is 0, and the
  18 remaining "而不是" clauses each rule out an assumption a reader would
  actually make (a rejected password is not truncated; a font name is not a
  bundled file; a decoder panic must not exit silently).
- Removed the closing editorial lines that asserted significance without adding
  information ("这也是 NyaTerm 和普通多标签终端差异较大的地方"), and the
  meta-commentary where the docs explained their own conventions.
- Dropped the relative time anchors that were already going stale: "新的 SFTP
  后端", "较新的工作区", "现在可以", "Newer Agent workflows".
- Deleted the "如果你准备录制文档素材" passage, which told the reader how to
  stage screenshots for the docs rather than how to use the recorder.
- Removed seven `:::tip Screenshot suggestion` blocks that shipped only in the
  English pages. They were internal authoring notes and pointed at a
  /img/docs/ tree and scripts/demo-*.sh files that do not exist in this repo.
- Dropped "推荐的工作流组合", four permutations of features documented
  elsewhere, and gave the synchronized input group one home instead of the
  three partial copies it had across two pages.
- Rewrote the cloud-sync conflict choices to lead with what is lost, since
  "适合:你确认云端版本才是应该保留的版本" buried the fact that local
  unsynced changes are discarded.

Also closes the remaining English gaps found while doing this: selection and
bulk operations, content-fingerprint upload, two FAQ entries, and two
quick-start steps existed only in Chinese. Chinese and English now carry the
same heading count on every page.

Verified with `pnpm --dir docs-site build` (both locales) and by re-resolving
all 22 cross-page anchors against the generated heading ids.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 11:27:47 +08:00

154 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 安全功能
NyaTerm 的安全能力主要围绕三件事展开:
1. 安全保存本地凭据与认证材料
2. 管理 SSH 连接过程中的主机校验与二次认证
3. 在桌面端工作区中提供锁屏、主密码与敏感操作保护
## 本地敏感数据的保存方式
NyaTerm 会在本地保存连接相关配置,并对敏感内容做加密处理后再写入本地存储。常见的敏感数据包括:
- 已保存密码
- SSH 私钥与私钥口令
- OTP 密钥
- 主密码相关保护材料
- 代理或其他需要保护的认证材料
- AI provider 凭据
界面上呈现的是可复用的密码 / 私钥 / OTP 条目,明文不会落在普通文本配置文件里。
## Security/Auth 面板
左侧活动栏中的 **Security/Auth** 面板集中管理认证相关内容,分为三类:
- **密钥**
- **密码**
- **OTP**
凭据先存成可复用条目,再在连接表单中引用,不必在每个连接里重复录入。
### SSH 密钥管理
保存登录私钥,包括带密码短语的私钥和按环境区分的多个身份。创建 SSH 连接时把认证方式切到 **私钥**,即可选择已保存的密钥。
### 密码管理
保存 SSH 密码、代理密码和其他需要复用的口令条目。SSH 连接表单中的密码认证直接引用这里的条目。
密码管理支持查看已保存密码的明文(需要先解锁敏感数据),方便确认凭据内容。
### 凭据管理与终端自动填充
凭据管理独立于 SSH 密码认证,用来响应终端交互过程中出现的密码提示,例如 `sudo` 提示、二次确认密码或脚本里的交互式输入。
每个凭据条目包含:
- **名称** — 用于标识
- **提示正则** — 匹配终端中出现的提示文本,例如 `[Pp]assword:` 或 `Enter passphrase`
- **发送值** — 匹配成功后发送的内容
- **启用 / 禁用** — 控制该条目是否参与匹配
终端输出命中某条提示正则时会弹出自动填充提示,由你选择填充或忽略。凭据以加密形式保存在本地存储中,查看已保存密码需要先输入主密码解锁敏感数据。自动填充只在正则命中时触发,不会无条件发送。
### OTP 管理
OTP 管理支持:
- **TOTP**
- **HOTP**
- 从二维码图片导入
- 查看并生成当前验证码
- 绑定到具体 SSH 连接
详细使用方式见 [OTP 与认证](./otp-and-auth)。
## 主密码
主密码是 NyaTerm 桌面端最重要的一项本地保护能力。
你可以在 **设置 → 安全** 中设置主密码。设置后:
- 应用会用它来校验解锁
- 本地敏感配置的保护会围绕它展开
- 锁屏界面会要求输入这个密码才能解锁
- **云同步** 相关操作才允许被启用
- NyaTerm 的加密 `.nya` 配置导入 / 导出也会以它作为前提条件
没有设置主密码时,锁屏只是一层界面遮罩,点击即可解除,不构成密码保护。
## 云同步与导入导出的安全模型
启用 **设置 → 云同步** 时,主密码是硬性前置条件。
当前实现里:
- 没有主密码时,不能启用云同步相关操作
- 云端 provider 凭据会作为受保护的本地敏感数据处理
- 上传到云端的是**加密后的可移植快照**,而不是明文配置文件
- `.nya` 导入 / 导出同样依赖主密码
- 导入 `.nya` 后通常需要重启应用
- 从云端拉取会覆盖快照中包含的可移植本地数据,但不会把所有设备本地 UI 状态都无差别漫游到另一台设备上
它的定位是跨设备同步常用配置,配合本地 `.nya` 导出完成备份和迁移,不是多人协作或字段级合并工具。
更详细的配置与行为说明见 [云同步](./sync-and-backup)。
## 屏幕锁定与应用锁定
### 手动锁定
你可以随时从界面中的锁定入口或快捷键触发锁屏。
### 自动锁定
在 **设置 → 安全** 中开启屏幕锁定后,还可以配置空闲分钟数:
- `0` 表示不使用空闲自动锁定
- 大于 `0` 时,空闲达到设定时间后自动进入锁屏界面
### 解锁行为
- **已设置主密码**:必须输入正确主密码才能解锁
- **未设置主密码**:可以直接点击解锁
应用锁定状态会在主工作区、模态子窗口和空闲检测之间保持一致。进入锁定后,终端内容和敏感面板会被遮挡;解锁前不要把它当作远端系统的权限控制,它保护的是本机 NyaTerm 工作区视图和本地敏感操作入口。
在共享办公环境或演示现场使用时,把主密码、屏幕锁定和空闲自动锁定一起开启。
## SSH 主机密钥策略
SSH 首次连接未知主机时,NyaTerm 支持三种策略:
| 策略 | 行为 |
|------|------|
| 提示 | 首次连接时询问是否信任(默认) |
| 接受 | 自动接受新的主机密钥 |
| 严格 | 拒绝所有未知主机 |
已知主机记录最终保存在本地 `redb` 存储中的 `known_hosts` 文本文档。旧版 redb 文本文档中的 `known_hosts` 内容会按兼容路径导入;文档不承诺读取任意文件系统位置的旧 `known_hosts` 文件。
对主机身份校验要求较高的环境使用「提示」或「严格」,不要用「接受」。
## 本地持久化模型
安装模式下主要用户数据保存在 `~/.nyaterm/nyaterm.redb`;portable 模式使用程序旁 `data/config/` 下的配置数据。
其中大致包括:
- 设置、连接、密钥、密码、OTP、代理、隧道、快捷命令、历史等 JSON 文档
- `known_hosts`、`master.key` 等文本文档
旧 Dragonfly 数据通过旧加密前缀和旧存储文档的兼容 fallback 读取;不会承诺首次启动自动复制整个 `~/.dragonfly/` 目录或保留一个自动回滚副本。
**导出配置** 把全部配置压缩并加密为 `.nya`,用于迁移或离线留存,导入导出都依赖主密码。**导出诊断包** 打包近期日志和运行时摘要用于排查问题;诊断包在分享前先检查内容。两个入口和日志级别、日志保留时间、打开日志目录都在 **设置 → 常规**。
## 安全使用建议
- 生产环境优先使用 **私钥 + OTP**,不要长期依赖单一密码
- 对共享电脑或演示机,开启 **主密码** 与 **屏幕锁定**
- 对需要经常穿过堡垒机的环境,把 **跳板机** 和 **代理** 做成明确的已保存配置
- 对首次连接的新主机,核对主机密钥来源后再信任
- 对 AI provider 凭据、同步 provider 凭据和 `.nya` 备份文件,按和 SSH 凭据相同的敏感级别管理