yubikeyを買ったからには使い方をマスターしたい・・!
環境
Windows11 pro
Yubikey 5 NFC Firmware:5.4.3
個人的な備忘録です。解決できてないところも多々あります。
ハマりポイント
Yubikeyの構造(?)は
1.FIDO2
2. PIV
3. GPG
この3つそれぞれにPINが存在する!
さらに、GPGはadmin PINが存在する!!
admin PIN3回間違えた!!😭
iPhoneの多要素認証で、FIDOが利用できるようになりました
セキュリティーキー2本必要です!!
FIDOにSSHキーを保存する
FIDOでSSHキーを持つことも可能!
(セキュリティ的にはGPGのがいいかと思いますが、こっちのほうが簡単です)
Git Bashを管理者権限で開く
キーを作成
$ ssh-keygen -t ed25519-sk -O resident -O application=ssh:GitHub -C "your@example"
パスフレーズの設定、PINの入力、yubikeyにタッチ
これでyubikeyのFIDOへSSHキーが登録されます。
ちなみに、Powershellでやると、、unsupported key typeとエラーがでます。。
どうもwindows特有のバグらしいんですが、詳しいことは知りません。なのでgit bashで実行しないといけないようです。
下記コマンドで、PC移転や紛失時にカレントディレクトリに鍵が復元されます。
ssh-keygen -K
ハマりポイント
途中、public keyのパーミッションがおかしいとか怒られました。
ssh-add 実行したところ、SSHエージェントが起動されてなかった・・
参考URL
なぜかここだけ、語調変わってしまった・・・
追記
githubに設定してみたところ、やたらタッチしてくれとでるようになったので向かないことが判明。
(そうかfetchか。。。)
※soucetreeを起動してた時になっていたのでそのせいかも。もしかすると違う要因???
GPGへのカギ転送は副鍵だけをやるべきなのか・・・??
副鍵だけ転送されてる方多くて、やってしまったか感ある。
github署名もできるようにしたのに、またいろいろやり直したくない・・
(転送する前にgpgバックアップとってなかった)
subkeyを追加したら、keyを指定してるのに後に追加された方が設定されてしまった。
副鍵を指定するにはこの方法のようだが、そんな秘密カギない!っておこられてしまった。。。
$ git config --global user.signinkey keyID!
サフィックス\!と書いてる人をみたが、ダメだった・・・、、
gitのアプデをしばらくしてないと思い、アプデするもだめ。
別の副鍵の秘密鍵PCにあったら、Yubikeyに接続していないのか??
解決方法分からないけど、どうせ使ってない鍵だしと思い、削除して解決・・・
もやる
FIDOの認証鍵リストを見る・削除するコマンド
※要:管理者権限
リスト
ykman fido credentials list
削除
ykman fido credentials delete [credential id]
credential idの...は不要
GPGでハマったところメモ
gpgコマンドに入って、設定し終わったらCtrl + Cで抜けてた。
何も保存されてない現象が発覚。
q
もしくは
save
で抜けないと保存されない😱
yubikeyに移したGPGキーは、秘密鍵しか持ってない!
公開鍵をエクスポートしようとしてもないって言われてしまう
PIVに入ってるキーの公開鍵の取得方法(SSH形式)
PIVの番号かは定かではない。末尾がPIV AUTH pubkeyになるので、おそらくそうだと思っている
1~4まで
.\pkcs15-tool.exe --read-ssh-key PIVの番号
authentication: piv auth
key man:key management
card AUTH:card authentication
PIVの9dにgithub用SSHを設定したところ、どうもPC内の証明書が参照されてしまい、どうもうまくいかない。もしかすると、agent周りが混線している?
gpg-agent立ち上げてるとpagentが起動しないとかあるので、悩ましい...
9aに入ってるawsに接続してるSSHはうまく動作するんだけれども、pkcsのdll設定するときに、この番号のを選択できないものか・・・
この辺全く知識皆無の状態で始めたのでハードルが高かったか・・・
もしくは、そもそもwindows環境ではよほどの知識がなければ難しいのか・・・!?
悩ましい。
yubikeyの中には秘密鍵しかないので、公開鍵までエクスポートできません。。。
そこで、チートなやり方
sshの公開鍵が撮れるようにはなったけど、やっぱりパソコン内の証明書を参照してしまう・・・
Bad permissions. Try removing permissions for user: PC名\\user名 (証明書名) on file /path/to/鍵名
後日追記
ちがう・・・!証明書じゃない・・・。
別で作ったPCユーザーだこれは・・(似たような名前にしてしまったので気が付かず)
更に追記
ssh-add -l
を、powershellと、git bashで実行したときに挙動が違うことが分かった。
git bashでなら、gpgで登録している鍵が表示されるのに、
powershellだと、表示されない。。。
wsl-ssh-agentなるものをインストールしようとしたが、トロイの木馬とのことでディフェンダーに消される・・
gpg --card-status
を実行したら、
~\AppData\Roaming\gnupg\private-keys-v1.d
に、キーが追加された(ファイル名は{$keygrip}.key)
たまに、ずっと刺しっぱなしなのに、
カード違うからこのコードのyubikeyに変えてくれって出るので、不安定感が・・・
gpg-agent再起動しても動かないこともあるので、まだがっつり使うのはちょっと不安。
買ったからには色々使い込んでみたかったけど、PIVかFIDOでかるく運用する程度にしておこう・・