yubikey 5 NFC の初期設定と ssh 鍵の発行

はじめに

年の瀬なので今年買った積みガジェットを消化していきましょう。
今回は YubiKey 5 NFC(USB-A)を利用して 秘密鍵を PC 上に保管せず公開鍵の発行と RaspberryPi へ SSH するところまでをやってみます。

yubikey をセットアップ

YubiKey PIV Manager は deprecated だそうです。
代わりに YubiKey Manager の qt 製の GUI あるいは CUI があるようです。

CUI のインストール

ykmanopenscbrew でインストールします。

$ brew install ykman
$ brew install opensc

GUI のインストール

以下の Releases ページからダウンロードできます。
Qt 製なのですね。

developers.yubico.com

yubikey から公開鍵を発行する

yubikey を mac に接続します。
ykman listmac に認識されているかを確認できます。

$ ykman list
YubiKey 5 NFC [OTP+FIDO+CCID] Serial: XXXXXXX

yubikey の PIV(Personal Identity Verification)では 9a 9c 9d 9e の 4つのスロットがあり、4つの秘密鍵を保管しておくことができるようです。
ykman コマンドで SSH 用の RSA の鍵の生成を行います。

$ ykman piv generate-key -a RSA2048 9a pubkey.pub
$ ykman piv generate-certificate -s "SSH Key" 9a pubkey.pub

発行した RSA の鍵は GUI からも確認することができます。

f:id:nananao_dev:20191208115111p:plain

.ssh/config に PKCS11Provider のパスを指定します。

$ cat /Users/nao/.ssh/config 
Host raspberrypi.local
        User pi
        PKCS11Provider /usr/local/lib/opensc-pkcs11.so

ssh-keygen コマンドで authorized_keys に追記できる形式に修正し SSH する先の raspberrypi へ scp します。

$ ssh-keygen -i -m PKCS8 -f pubkey.pub > pubkey
$ scp ~/.ssh/pubkey pi@raspberrypi.local:

raspberrypi 側で authorized_keys へ追記します。

$ cat pubkey >> ~/.ssh/authorized_keys
$ rm pubkey

raspberrypi へ SSH しましょう。
PIN が聞かれます。
デフォルトの設定では 123456 です。

$ ssh pi@raspberrypi.local
PIN:

無事SSHできました。

まとめ

yubikey 5 NFC の初期設定と ssh 鍵の発行する方法をまとめました。

参考サイト

qiita.com