Yubikey 的使用

安装YubiKey Manager工具

YubiKey Manager 是官方的配置工具,支持 gui 和 cli,开源地址:yubikey-manager

在 windows 下可以用 winget 来安装:

winget install Yubico.YubikeyManager

cli 和 gui 的程序默认会安装在路径 C:\Program Files\Yubico\YubiKey Manager 下,winget 目前不会像chocolatey 把安装路径添加到环境变量,需要手动去添加。
添加完后就可以直接用 ykman 命令来配置 yubikey 。

Usage: ykman.exe [OPTIONS] COMMAND [ARGS]...

  Configure your YubiKey via the command line.
...

修改 PIV 默认 PIN 、PUK、Management Key

第一次使用 YubiKey PIV 需要修改相关默认配置。

ykman piv access change-pin
ykman piv access change-puk
ykman piv access change-management-key --protect --touch

过程中可能会提示输入当前值,默认 PIN 码为 123456,默认 PUK 码为 12345678。
Management key 用于保护密钥,所以设置 Management key 很重要,不然保存的密钥可以被抹除 : ( 。

使用 YubiKey 登录 SSH

生成非对称密钥

yubiKey 支持 RSA1024 | RSA2048| ECCP256| ECCP384 算法,这里我选择 ECCP256,保存在 9A 槽上,关于 PIV 插槽说明,可以查看官方文档),输出公钥 pubkey.pem。

ykman piv keys generate -a ECCP256 --pin-policy=once --touch-policy=always 9a pubkey.pem

后续如果公钥文件遗失,可以通过 yubikey 导出。

ykman piv keys export 9a pubkey.pem

服务端部署公钥

先把 pubkey.pem 传到服务端,然后转换为 SSH 公钥。

ssh-keygen -i -m pkcs8 -f pubkey.pem

把输出的内容复制到 ~/.ssh/authorized_keys,最后重启 SSH 服务端。

设置 SSH 客户端支持 YubiKey PIV

基于 YubiKey 的 PKCS#11 扩展,让 SSH 客户端通过 YubiKey 连接服务端。

Windows 自带的 OpenSSH

更新 OpenSSH 到 Beta 版。

winget install "openssh beta"

下载 yubico-piv-tool Releases ,安装 openssh 对应版本下的 x86/x64 版本,一般装的是 x64 版本。
假设安装的 x64 版本 ,编辑 %userprofile%\.ssh\config ,如果没有可以新建一个,添加下面内容,添加前确定路径内的 libykcs11.dll 是否存在。

PKCS11Provider "C:\Program Files \Yubico\Yubico PIV Tool\bin\libykcs11.dll"

然后打开命令行,假设你要连的 IP 是 192.168.1.1 。

ssh root@192.168.1.1

提示输入 PIN 值,如果没反应可能是需要你触摸一下 yubico 。

OpenSC 中间件

下载 OpenSC,选x86 还是 x64 视 SSH 客户端而定,比如,装在 C:\Program Files (x86) 下的 XShell 就用 x86。
安装的时候选 Typical 。

生成证书。

ykman piv certificates generate --subject "SSH" 9a pubkey.pem

如果是 ECC 算法还需要安装 YubiKey Minidriver。截至我测试的时候,XShell 不支持 ECC 算法的证书,推荐生成 RSA 2048 证书。

设置 XShell,会话 -> 用户身份验证 -> PKCS11 。
设置 PKCS11,中间件选安装的 OpenSC 目录,pkcs11\opensc-pkcs11.dll ,令牌引脚填 pin 码。

XShell 连接会话,没反应的时候可能是需要触摸 yubico,一次或两三次。

pageant 代理

下载 putty-cac 的 pageant,或者 WinCryptSSHAgent

生成证书,参考 OpenSC 中间件。

pageant 打开后勾选 Autoload Certs & Keys,双击后会显示 key lists 包含yubico 证书。

XShell 会话 -> SSH -> 使用 Xagent 进行身份认证。
用户身份验证 -> Public key。

MobaXterm 设置 SSH -> Use external Pageant。

使用 YubiKey 进行 Git 签名

生成 PGP 密钥

生成认证密钥

发表评论

目录