我在去年使用了Clouldflare提供的Offer购买了一大堆的YubiKey 5,给群友分了几个之后自己也用起来了。这篇文章讲的东西也并不新鲜,但是我在使用YubiKey的时候也踩了一些坑,简单记录一下,希望能帮到跟我一样有疑问的人。
TLDR
- 你只需要导入SSH的私钥就行,不需要生成和导入X.509证书。
- YubiKey Manager是个废物,还得是yubico-piv-tool。
- 不建议让YubiKey生成证书和私钥,这种情况下私钥无法导出备份,YubiKey丢了很麻烦。
- 如果你是一个狂热的加密爱好者,我的操作是不够安全的。
HOWTO
1. 准备好你的SSH私钥
一般来说,你的SSH私钥在 ~/.ssh/ 目录下,根据密钥加密方式的不同,文件名有所区别,例如 id_rsa。
2. 识别你的私钥格式
在下一步中,你需要明确你的SSH私钥是哪种格式,常见的SSH私钥格式有OPENSSH、SSH2和PEM等。
例如这是一个常见的OPENSSH私钥:
1 2 3 4 5 6 7 8 9 10 |
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn NhAAAAAwEAAQAAAYEApYX/2UubJQu6RKheRK15Dk9kD55rPOTGGYXoIS05tFjbiCc3uf8/ HIXo+gQngr5eg3LztrfgHTAaK1oOMKbS04UL2NCRAf7xGWuFaE3fxtrvg+zSrNokJ6O6kE ...... SP2ZTxr+KmVRVFgDWXaym5UeOw7CBtOGp0EjER5VgNOqcFlxNud4TdNo4Y+8qrB5qEX5PZ dlnBYlfxvxoJ59gzfQkPvWNzZTIQ1ViRQYA9geblou085fws2TRkXw1/h/Jk3eQrS7NtMp AvmPxTuI6C9NNrnyB4fqIbUEPcEIVEgRDjcWyJumUVO8McYa+BY7rqRyXONShHGI7TrdTz 1D6iohRJpUjycAAAAadXNlckBsb2NhbGhvc3QubG9jYWxkb21haW4B -----END OPENSSH PRIVATE KEY----- |
这是一个常见的PEM私钥:
1 2 3 4 5 6 7 8 9 10 |
-----BEGIN RSA PRIVATE KEY----- MIIG4wIBAAKCAYEApYX/2UubJQu6RKheRK15Dk9kD55rPOTGGYXoIS05tFjbiCc3 uf8/HIXo+gQngr5eg3LztrfgHTAaK1oOMKbS04UL2NCRAf7xGWuFaE3fxtrvg+zS rNokJ6O6kEr7K+w70J9/WY23Cnpes5ZUdYofn+TZYn85iny4q8qb0lIhWAqoxjC9 ...... J5wt4GNaCC3P1oi2m7ZIVMfUyHKMyfLhhJSfsLooYWEFpcpDSzteSwBA2XKNbUhY P0OTu26mI6AVpBG81k7d0HSVqGx+SL2OLYtr+AyWVPCd9JISeX8rJnWlE5793LrE 8GeYZXu0a9cX/iVIc1tqagzRcxGzx2zgTj+yzECw5MGwAvj5dXOp6oHq6FR2M8yn V+3fLZkVRa/auzsqhtLaT3/nc1nZ8jmaaGad0Ie2xU3g6oKSuTDe -----END RSA PRIVATE KEY----- |
由于YubiKey Manager只支持PEM格式的密钥,所以你需要将其他格式的密钥转成PEM格式。
1 2 3 4 |
$ ssh-keygen -p -m pem -f ~/.ssh/id_rsa Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase. |
3. 导入你的私钥到PIV
使用YubiKey Manager来导入私钥到slot 9a
打开YubiKey Manager,Applications->PIV->Configure Certificates->Authentication (Slot 9a)->Import 选择你的密钥文件。
你可能需要修改一下文件后缀名为key或者pem才能导入。
使用yubico-piv-tool来导入私钥到slot 9a
1 2 3 |
$ yubico-piv-tool -a import-key -k -s 9a -i ~/.ssh/id_rsa Enter management key: Successfully imported a new private key. |
4. 生成公钥并将其上传至远程服务器(可选)
这个都会吧,先不写
5. 认证SSH
先安装yubico-piv-tool
1 |
$ brew install yubico-piv-tool |
使用PKCS#11认证SSH
1 2 |
$ ssh -I /opt/homebrew/lib/libykcs11.dylib user@server Enter PIN for 'YubiKey PIV #12345678': |
你也可以将PKCS11Provider添加到~/.ssh/config
1 2 3 4 |
Host github.com PKCS11Provider /opt/homebrew/lib/libykcs11.dylib Port 22 User foobar |
FAQ
Q: 只能YubiKey的PIV来做SSH认证吗?
A: 不是的。现在你还可以使用OpenPGP和FIDO2进行SSH认证。
REFER
https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html
0 条评论
暂无评论,要说点什么吗?