Termius MFA 多因素认证与硬件密钥 | YubiKey、FIDO2 加固 SSH 安全
SSH 连接为什么还要加 MFA
密钥认证已经比密码安全很多了,但还是有弱点:
- 如果私钥文件被恶意软件偷了 → 攻击者能直接连你的服务器
- 如果电脑被入侵 → 私钥可能被拷走
- 传统密钥只有一层验证("你有正确的钥匙吗?")
MFA(多因素认证)加一层:除了密钥,还要有一个「只有你能实时提供」的东西才能连。
Termius 支持的 MFA 方式
1. 硬件密钥(FIDO2 / U2F)
推荐,最高安全性。
支持的硬件:
- YubiKey 5 / YubiKey Bio
- Google Titan Security Key
- Feitian 系列
- 其他 FIDO2 / U2F 兼容设备
工作原理:
- 生成一对 FIDO2 密钥——私钥烧在硬件里,永远导不出来
- 服务器部署公钥
- 连接时 Termius 会提示「按下硬件密钥确认」
- 只有物理按下硬件密钥才能完成认证
好处:
- 即使电脑中病毒、私钥文件被偷,攻击者没有你的 YubiKey 也连不上
- 硬件密钥抗钓鱼(和浏览器的 FIDO2 登录一样)
- 一套密钥可以在多台设备上使用(需要硬件在场)
Termius 配置步骤:
- 插入硬件密钥
- 左侧导航 → Keys → New Keychain Identity → 选择 Hardware Key / FIDO2
- Termius 检测到硬件后提示按一下
- 生成密钥对,公钥复制到服务器
- 后续连接到启用了硬件密钥认证的主机时,Termius 会提示插入并按一下硬件
服务器端配置:
- OpenSSH 8.2+ 支持 FIDO2(
sk-ssh-ed25519@openssh.com) - 在
/etc/ssh/sshd_config里确保PubkeyAuthentication yes - 公钥文件里要包含
sk-ssh-ed25519@openssh.com前缀
2. TOTP(基于时间的一次性密码)
软件级的 MFA,用手机 App 生成验证码。
典型方式:
- Google Authenticator / Microsoft Authenticator / 1Password 等 App 生成 6 位动态码
- SSH 连接时除了密钥,还要输入这个动态码
Termius 可以和 TOTP 配合:
- 有些服务器配置了
ChallengeResponseAuthentication结合 TOTP - Termius 能正确处理交互式 Challenge-Response 提示
- 你需要在 Termius 弹出的提示框里输入手机上生成的动态码
3. 密码 + 密钥双重
最简单的 MFA 变体:
- 先过密钥认证
- 密钥通过后还要输入账户密码
Termius 可以配置同一主机先 Key 再 Password,按顺序尝试认证方式。这在服务器端 AuthenticationMethods publickey,password 配置了多因素时自动触发。
SSO(Business / Enterprise 版)
Business 和 Enterprise 版支持 SAML / OIDC SSO 单点登录:
- 用公司的身份提供商(Okta / Azure AD / Google Workspace)登录 Termius 账号
- 登录时触发公司 SSO 的 MFA(可能是硬件密钥、短信验证码、生物识别等)
- SSO 登录解决的是「登录 Termius 云账号」这一层,不是「SSH 到服务器」这一层
- SSH 到服务器还是需要密钥 / 密码
换句话说:SSO 保护的是 Vaults 云数据的访问(谁能拿到主机配置),MFA 保护的是 SSH 到具体服务器的连接。两层独立。
硬件密钥在移动端能用吗
iOS: 通过 Lightning 或 USB-C 转接头连接 YubiKey,Termius iOS 版支持 FIDO2。
Android: 通过 USB OTG 连接 YubiKey,Termius Android 版同样支持。
实际场景:你在服务器上配置了 FIDO2 密钥,把公钥部署到服务器后,不管用电脑还是手机,都需要插入硬件密钥并按一下才能连上。这确保了即使手机丢了也不会有人用你的 SSH 连接。
推荐的安全层级
根据安全需求,组合方式:
| 安全级别 | 推荐方案 |
|---|---|
| 普通个人使用 | 密钥认证(Ed25519 + passphrase) |
| 重要服务器 | 密钥 + YubiKey FIDO2 |
| 合规要求 | SSO + YubiKey + 密钥 |
| 最高 | 硬件密钥 + 跳板机 + 操作审计日志 |
注意事项
- 硬件密钥丢了 → 服务器上对应的公钥要立刻删除,同时生成新密钥对
- passphrase 一定要设(即使有硬件密钥,私钥文件存在本地还是需要 passphrase 保护)
- 定期(比如半年)轮换密钥