Security notes · 2026 年 10 月 11 日
YubiKey 的使用场景
一把 YubiKey 能用在哪些地方:网站登录、电脑登录、SSH 和 Git、加密签名、验证码,以及它管不到的地方。
先说结论
YubiKey 5 系列支持六类用法;Security Key 系列只支持第一类,即网站和应用登录(FIDO2)。
收益最大的两件事:给主邮箱、Apple 账号、密码管理器这类“管着其他账号的账号”加上 YubiKey;把 SSH 私钥放进 YubiKey。每个账号都注册两把 key,一把随身,一把放家里。
一、六类用法总览
下表按对个人的用处从高到低排列。
| 用法 | 用到的功能 | 5 系列 | Security Key 系列 |
|---|---|---|---|
| 网站和应用登录 | FIDO2 / WebAuthn、U2F | 支持 | 支持 |
| 电脑登录 | 智能卡(PIV)、FIDO2 | 支持 | 只支持 FIDO2 部分 |
| SSH 和 Git | FIDO2(-sk 密钥) | 支持 | 支持 |
| 加密和签名 | OpenPGP、PIV | 支持 | 不支持 |
| TOTP 验证码 | OATH | 支持 | 不支持 |
| OTP 和其他 | Yubico OTP、静态密码、挑战应答 | 支持 | 不支持 |
固件 5.7 及以后,一把 key 最多存 100 个 passkey、64 个 TOTP 账号;5.0 到 5.6 分别是 25 个和 32 个。U2F 方式的第二因素不占存储,数量不限1,2。固件不能升级,买新 key 时确认版本在 5.7 以上。
二、网站和应用登录
这是 YubiKey 最主要的用法。网站发来一个随机挑战,YubiKey 用存在 key 里的私钥签名,网站用公钥验证。私钥只认注册时的域名,钓鱼网站拿不到可用的签名。
2.1 无密码登录和第二因素
- 无密码登录:passkey 存在 YubiKey 里。登录时插上或贴一下 key,输入 PIN,直接进入账号。
- 第二因素:先输入密码,再碰一下 key。它替代短信验证码和手机验证器 App。
- iPhone 上的用法:把 key 贴在手机顶部(NFC),或插进 USB-C 口。
2.2 支持的服务
常见的有 Apple 账号、Google 和 Google Workspace、Microsoft、GitHub、GitLab、Cloudflare、AWS、1Password、Bitwarden、Dropbox、X、Facebook、Coinbase、Binance,以及大部分域名注册商。
Apple 账号要求至少注册两把 key,最多六把;所有登录这个账号的设备要升级到 iOS 16.3 或 macOS Ventura 13.2 以上3。Apple 建议两把 key 分开放,一把在家,一把在办公室;key 和受信任设备全部丢失时,账号可能永久锁死3,4。
公司用 Google Workspace 时,可以要求管理员必须用安全密钥登录。管理员密码被钓走后,攻击者仍然登不进去。
三、电脑登录
| 系统 | 做法 |
|---|---|
| Mac | macOS 原生支持智能卡登录。用 sc_auth 把 key 和账号配对,之后用 key 加 PIN 登录,替代账号密码。 |
| Windows | Microsoft 账号和 Entra ID(原 Azure AD)支持用 FIDO2 key 登录。 |
| Linux | 装 pam-u2f,登录和 sudo 都要求碰一下 key6。 |
| Linux 磁盘加密 | systemd-cryptenroll --fido2-device=auto 让 key 解锁 LUKS 加密盘7。Mac 的 FileVault 不能直接用 key 解锁。 |
四、SSH 和 Git
OpenSSH 8.2 起支持把 SSH 密钥绑在 FIDO2 key 上5。对写代码、管服务器的人,这一类用处很大。
4.1 SSH 密钥放进 YubiKey
ssh-keygen -t ed25519-sk -O resident -O verify-required
- 私钥留在 YubiKey 里,不能导出。电脑被偷或中了恶意软件,攻击者也复制不走私钥。
- 每次连接要碰一下 key。
verify-required还要求输入 PIN。 -O resident把密钥存在 key 上。换新电脑时运行ssh-keygen -K,就能取回密钥文件。- macOS 自带的
ssh可能不支持-sk密钥。生成失败时,用 Homebrew 装 OpenSSH 再试。
把 -sk 公钥放到服务器上之后,只拷走一份电脑硬盘的人登不进服务器。
4.2 Git 提交签名
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519_sk.pub
git config --global commit.gpgsign true
用同一把 -sk 密钥签名提交。公钥加到 GitHub 的签名密钥后,提交显示 Verified8。没有这把 key,别人无法以你的名义签名提交。
五、加密和签名
- OpenPGP:key 存 PGP 私钥,用于邮件加密、文件签名和
pass密码库。私钥不能导出。 - age:装上
age-plugin-yubikey后,用 key 加密文件、备份和服务器密钥,只有这把 key 能解密9。它比 PGP 简单。 - 证书(PIV):key 存 X.509 证书,用于公司 VPN、文档签名和内部证书系统。
六、TOTP 验证码
Yubico Authenticator 把 TOTP 的密钥存在 YubiKey 里,手机上只负责显示验证码10。
- 适用:只支持 TOTP、不支持 FIDO2 的网站。很多国内服务和老系统是这样。
- 好处:换手机不用迁移;手机丢了,验证码还在 key 里。
- 限制:TOTP 验证码能被钓鱼网站骗走。网站支持 FIDO2 时,用 FIDO2。
七、OTP 和其他功能
| 功能 | 做什么 | 现在的用处 |
|---|---|---|
| Yubico OTP | key 自动输入一串一次性码。 | 用的服务很少。 |
| 静态密码 | key 输入一串固定的长字符串。 | 可以当主密码的一半,不能当整个密码。 |
| 挑战应答 | 程序发来挑战,key 算出应答。 | KeePassXC 用它解锁密码库。 |
八、YubiKey 不做的事
- 它不存普通密码。密码还放在密码管理器里,YubiKey 保护的是密码管理器的登录。
- 它不是加密货币钱包。存币用 Ledger、Trezor 这类硬件钱包。
- 它只保护登录那一步。登录之后,电脑上的恶意软件仍然能偷走浏览器里的会话 cookie。
九、建议配置
| 优先级 | 用法 | 账号和工具 |
|---|---|---|
| 1 | “主账号”加 FIDO2 | Apple 账号、Google(个人和 Workspace 管理员)、1Password、主邮箱 |
| 2 | 基础设施加 FIDO2 | GitHub、Cloudflare、AWS 和云服务器、域名注册商、银行 |
| 3 | SSH 和 Git 签名 | 服务器和 GitHub 用 ed25519-sk 密钥 |
| 4 | TOTP | 只支持 TOTP 的网站 |
| 5 | 按需 | Mac 智能卡登录、age 加密备份 |
每个账号都注册两把 key。SSH 的 -sk 密钥例外:它只存在生成它的那一把 key 上。在第二把 key 上另生成一个 SSH 密钥,两个公钥都加到服务器和 GitHub。
其他普通账号用手机或密码管理器同步的 passkey 就够了。YubiKey 留给那些一旦丢失、会连带丢掉其他账号的账号。
十、方法与来源
本页由一次问答整理而成。2026-10-11 用网页检索核对了两组事实:YubiKey 固件 5.7 的存储上限(来源 1、2),Apple 账号使用安全密钥的要求(来源 3、4)。其余内容来自一般知识,包括各服务的支持列表、Mac 智能卡登录、OpenSSH、Git 签名、pam-u2f、systemd-cryptenroll、age 插件和 KeePassXC。来源 5 到 10 是这些工具的官方页面,本次没有逐条打开核对。macOS 自带 ssh 是否支持 -sk 密钥待确认。各服务的支持情况会变,用之前以服务方的页面为准。
- Yubico,《5.7 - 5.6 Firmware Specifics》,YubiKey Technical Manual,docs.yubico.com
- Yubico 支持,《How many accounts can I register my YubiKey with?》,support.yubico.com
- Apple 支持,《About Security Keys for Apple Account》,support.apple.com/102637
- Apple,《Use security keys for two-factor authentication on Mac》,Mac 使用手册,support.apple.com
- OpenSSH,《Release notes 8.2》,openssh.com/txt/release-8.2
- Yubico 开发者文档,《pam-u2f》,developers.yubico.com/pam-u2f
- systemd,《systemd-cryptenroll》手册页,freedesktop.org
- GitHub Docs,《About commit signature verification》,docs.github.com
- age-plugin-yubikey 仓库,github.com/str4d/age-plugin-yubikey
- Yubico,《Yubico Authenticator》,yubico.com