前些日子买了个 YubiKey,今天依旧不想看代码(盯着一百行代码看了俩星期了,有点抑郁),那么就继续学习新知识。

呐,就是这个像 U 盘一样的东西。据说有三种工作模式:
- 第一种是 “键盘模式”,摸一下就生成一个动态密码 / 自动输入固定密码,我觉得没啥用,而且一摸就会产生一串神秘代码,就直接拿
yubikey-personalization-gui
这个东西给干掉了(囧) - 第二种是 “U2F 模式”,两步验证,可以理解为上古时期的 “盛大密保”/“将军令”、现在的 “短信验证码”/“Google 身份验证器”,不需要做什么配置,能用的话插上去、摸一下就好了
- 第三种是 “GPG 智能卡模式”,可以存三个 GPG 密钥。
三种模式同时工作,互不影响。其中第一种模式还可以区分 “短摸” 和 “长摸”,能分别设置不同的密码生成模式。
Yubikey
+- HID
| +- U2F
| +- OTP (2 Slots)
| +- Yubico OTP
| +- OATH TOTP / HOTP
| +- Static Password
|
+- Challenge-Response (Share Slots w/ OTP)
| +- Yubico OTP
| +- HMAC-SHA1
|
+- Smart Card
+- PIV (18 Slots, 4 main slots)
+- OpenPGP (3 Slots)
总之就是上面的一大堆功能啦,官网都说不清楚……
使用 GPG 密钥免密码登录服务器
可以看这篇重新整理过的文章。每一步操作做啥都写清楚了。
作为二次验证设备
目前已经有一些网站支持 YubiKey 作为二次验证设备登录了,比如在 Google、Github、Dropbox 都可以使用。这样就不用每次输入短信验证码啦,只需要把 Key 插上去、摸一下,就能通过验证。
并且,如果你买的是 YubiKey 5C NFC 的话,它的 NFC 是支持给 iPhone 用的。遇到需要刷二次验证设备的时候,将 YubiKey 靠近 iPhone 头部,就能通过验证了。

有些网站不支持物理的二次验证设备,只支持类似于「Google 身份验证器」那样的设备。这个时候,我们可以在手机上下载 YubiKey,然后扫描给出的设备绑定二维码,再将 YubiKey 靠近 iPhone 头部,以将信息刷给 YubiKey。注意这里是刷给 YubiKey,也就是说,这个验证信息是存储在 YubiKey 里面的。在其他手机上用 YubiKey APP 刷当前这个 YubiKey,也是可以拿到验证码的。
给 Github 提交添加签名
可以按照这个官方教程来。
想 Commit 自动签名的话,小小设置一下:
git config --global user.signingkey XXXXXXXX
git config --global commit.gpgsign true
觉得目前看来更多是为了装 13……
本地二次认证
即使知道我的 sudo 密码,也必须插上 Key、摸一下才能 sudo~
首先,安装 u2f-host
。
然后,使用 pamu2fcfg -u${USER} > ~/.config/Yubico/u2f_keys
并摸一下,以注册设备。(其实会生成一串神秘代码,格式为<username>:<KeyHandle1>,<UserKey1>
)
最后,来到/etc/pam.d
,如果想在执行 sudo 的时候加上二次验证,就编辑 sudo
,加入 auth sufficient pam_u2f.so
。这样输入密码后必须再摸一下才能真正执行。
发表回复