身份验证
DR-Terminal 支持三种认证方式:密码、私钥和 FIDO2(YubiKey)安全密钥。
密码
最简单的方式。在已保存连接上输入的密码会进入平台的安全存储 — 绝不会进入 JSON 配置。如果密码字段为空,应用会在每次连接时询问。
公钥 → 密码回退:当服务器拒绝某个公钥时(例如它不在 authorized_keys 中),DR-Terminal 会自动改为询问同一用户的密码,而不是直接断开连接。
私钥
OpenSSH、PKCS#1、PKCS#8、ssh.com 或 PuTTY PPK(v2/v3)格式的密钥都可接受 — 格式会被自动检测,因此 .ppk 密钥无需先转换即可使用。你可以:
- 将密钥直接粘贴到连接表单中。
- 使用 密钥管理器(设置 → 安全 → SSH 密钥)并选择一个已存储的密钥。在这里导入的密钥文件还可以是原始二进制 DER。
如果密钥使用口令加密,DR-Terminal 会在该密钥首次使用时询问口令,随后 仅将其保存在内存中 — 就像 ssh-agent 一样,每次应用运行只需解锁一次;关闭应用后所有密钥会再次锁定。导入的加密密钥在安全存储中保持其原有的加密形式。我们支持多种算法 — RSA、ECDSA(P-256、P-384、P-521)、Ed25519、Ed25519-SK、ECDSA-SK(FIDO)。
密钥生成器
设置 → 安全 中有一个 生成 SSH 密钥 向导。选择类型(例如 ed25519),设置 口令(可选 — 即使在安全存储内也能保护密钥),然后密钥会被保存在本地。默认密钥注释为 ${user}@${host}@DR-Terminal — 便于在服务器上识别该密钥。公钥可以复制到剪贴板,用于服务器上的 ~/.ssh/authorized_keys。
列表中的密钥可以就地 重命名;如果你选的名称与已有名称冲突,应用会自动追加 (2)。
密钥转换器
设置 → 安全 → SSH 密钥 → 转换 会在所有常见格式之间重新序列化一个私钥 — 选择一个源(一个已存储的密钥、一个文件,或粘贴的文本)和一个目标格式,然后复制、分享或保存结果。
格式,双向支持:
| 格式 | 读取 | 写入 |
|---|---|---|
OpenSSH (BEGIN OPENSSH PRIVATE KEY) | ✓ | ✓ |
PKCS#8 (BEGIN PRIVATE KEY) | ✓ | ✓ |
PKCS#1 (BEGIN RSA PRIVATE KEY,仅 RSA) | ✓ | ✓ |
| PuTTY PPK — v2 和 v3 | ✓ | ✓ |
输入可以是 PEM(文本)、PuTTY PPK 或原始二进制 DER — 格式会被自动检测。密钥类型:RSA、Ed25519 和 ECDSA(P-256/384/521)。
- PuTTY PPK 导出 现在双向可用(以前应用只能读取
.ppk)。使用版本选择器选择 v3(Argon2id KDF + HMAC-SHA-256,现代 PuTTY)或 v2(较旧的 PuTTY)。以这种方式生成的文件可在 PuTTY/puttygen中原样加载。 - 可选的导出口令。 留空则生成未加密的密钥;设置它后,输出会用按格式选定的强 KDF(bcrypt / PBKDF2 / Argon2id)加密。参见 安全与数据 → 导出的密钥。
- 如果转换失败(源口令错误、格式不兼容),应用现在会显示实际原因,而不是笼统的错误。
PKCS#1 仅描述 RSA 密钥,因此仅当源是 RSA 密钥时才提供该目标。
将密码连接切换为密钥
你无需手动编辑 authorized_keys。对于已保存的密码连接,DR-Terminal 在两个位置提供引导式升级:
- 连接列表 — 密码连接卡片上的密钥图标会启动迁移向导。
- 会话内 — 已连接的密码会话的终端菜单中有 切换到 SSH 密钥。
两者运行相同的流程:选择一个已存储的密钥或生成一个新密钥,DR-Terminal 通过现有的密码登录将公钥部署到服务器,测试密钥认证是否确实可用,然后才把已保存的连接切换为密钥认证。如果测试失败,连接将保持不变。
安全密钥(FIDO2 / YubiKey)
DR-Terminal 可处理 ed25519-sk 和 ecdsa-sk 密钥 — 而且你可以在应用内生成它们。无需外部 ssh-keygen。
在 DR-Terminal 中生成基于 YubiKey 的密钥
- 设置 → 安全 → SSH 密钥 → 生成 SSH 密钥。
- 打开 安全密钥 开关。选择算法 — Ed25519-SK(推荐)或 ECDSA-SK。
- 出现提示时触摸你的 YubiKey。应用会请求令牌创建一个新凭证并对公钥进行签名。
- 密钥会存储在 DR-Terminal 的密钥管理器中。复制公钥并粘贴到目标服务器的
~/.ssh/authorized_keys中。
Windows Hello:在 Windows 上,FIDO2 PIN 提示是原生的 Windows Hello 对话框(PIN / 指纹 / 人脸),而不是应用内对话框。
驻留 密钥(存储在 YubiKey 本身上)省去了携带密钥文件的需要 — 整个私密内容都驻留在令牌上。在 DR-Terminal 中生成的密钥为非驻留密钥:凭证句柄保存在密钥管理器中,必须与令牌一起使用。
使用已有的 SK 密钥
如果你已经有一个在别处生成的 id_ed25519_sk / id_ecdsa_sk(例如通过 ssh-keygen -t ed25519-sk),可通过同一个密钥管理器导入它 — DR-Terminal 对导入的和生成的 SK 密钥一视同仁。
连接时
DR-Terminal 会请求你触摸密钥。指示灯会闪烁 — 轻触它即可。iOS 支持 NFC 和 USB-C(YubiKey 5Ci 及更新型号)。Android — NFC + USB(OTG)。桌面使用原生 FIDO2 API(Windows Hello、macOS、Linux 通过 libfido2)。