# 安全功能 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 凭据相同的敏感级别管理