YubiKeyを鍵にSSH接続する
FIDO2を使ってYubiKeyでSSH接続する
最近スマホを買いました。
BlackBerryに囚われているので物理キーボードが搭載されたスマホは買わなければいけないんです。
それはさておき、物理キーボードがついたスマホがあるとなると当然家のマシンにSSHしたくなるのが性。
スマホでssh-keygenで作った公開鍵をPCに追加するのも面倒ですし、せっかくなのでYubiKeyを活用したい。SSHに使えないかと思って調べてみると色々な方法があるらしい。
とりあえず一番新しそうなFIDO2でやってみます
TL;DR
公式のドキュメントを読みましょう
やっていく
FIDO2がサポートされていればYubiKeyじゃなくても良さそう。GoogleのTitanもFIDO2対応してた気がする。
OpenSSHのクライアントは8.3以降が良いらしい。Termuxで見てみたら OpenSSH_10.2p1 だったので大丈夫そう
YubiKey Managerというツールが別途YubiKeyのPIN設定に必要らしい。これは既に登録済みだったので割愛。
鍵生成
使えるのは
ecdsa-sked25519-sk
の2種。ここでは ed25519-sk にします。(YubiKeyのファームウェアが5.2.3以上である必要がある)
ssh-keygen -t ed25519-sk -O resident -O verify-required -C "your_email@example.com"
-O resident によりYubiKeyに鍵が保存され、YubiKeyだけで鍵の持ち運びができるっぽい。PINは必要だけど。
-O verify-required はPINとタッチの両方を求める。
生成時にもYubiKeyのタッチとPINの両方が求められる。それ以外は普段の鍵生成と同じ。
$ ssh-keygen -t ed25519-sk -O resident -O verify-required -C "comment"
Generating public/private ed25519-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter PIN for authenticator:
Enter file in which to save the key (/home/lilium/.ssh/id_ed25519_sk):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/lilium/.ssh/id_ed25519_sk
Your public key has been saved in /home/lilium/.ssh/id_ed25519_sk.pub
The key fingerprint is:
使用
部屋に転がっているmacに挿して使ってみます。
ssh-keygen -K でYubiKeyから鍵を取り出せるんですが、macでやる場合はデフォルトのssh-keygenではなくbrewなどで入れたバージョンを使う必要があります。
カレントディレクトリに吐き出されるので注意
$ ssh-keygen -K
Enter PIN for authenticator:
You may need to touch your authenticator to authorize key download.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Saved ED25519-SK key to id_ed25519_sk_rk
で、あとはこれを-iで指定するだけ。
Termux
さっきまでスマホで使う話をしていたのになぜ急にmacの話が出てきたのか。それはTermuxにまだlibfido2が来ていないからです…
まとめ
公式のドキュメント通りにし、libfido2があり、OpenSSHが新しめの環境であれば素直に使えることがわかりました。
この記事は🎄GMOぺパボ エンジニア Advent Calendar 2025の2日目の記事とします。
昨日は@yukyu30によるGoogle Workspace Flowsの実行結果をSlackに送信するでした。
あらゆる通知をどこか一つのアプリケーションにまとめたい気持ち、わかります。そういえばBlackBerry Hubというアプリは色々なメッセージ系アプリの通知をまとめられましたね…
明日は未定です。
Comments