LoginSignup
0
0

ssh鍵をiPhone/Android (Passkey) に入れて運用してみた(Windows)

Posted at

目的

sshをMFAに対応させる方法を模索してたらたどり着いた。
(sshも生体認証したいよねー)
Windowsのみ対応。また一部レジストリハック必要。

前提

  • Bluetooth搭載のWindowsPC
  • ログイン先のsshサーバが公開鍵タイプ sk-ecdsa-sha2-nistp256@openssh.com を受け入れる事

やり方

Putty-CACを導入

このputtyはMS-CAPI経由でWindowsの証明書ストアに保存されてた秘密鍵や、Windows HelloなどのFIDOを用いたsshの鍵認証が可能。 便利

FIDO鍵作成

putty.exe を起動させ、
connection -> SSH -> Certificate -> FIDO Tools

image.png
Application Nameに鍵の名前を適当につけて、Create Keyを押下。

image.png
Windows セキュリティのポップアップが出てくるので、別のデバイスを使用する

image.png
パスキーの保存場所として iPhone, iPad, または Android デバイスを選択して次へ

ちなみに、ここでセキュリティキーを選ぶとYubikeyなどのFIDO Tokenに、
このWindowsデバイスを選ぶとWindows Helloへ保存される

image.png

QRコードが出てくるのでスマホでスキャン。

スマホ側はスクショが取れず画面はないが、パスキーを保存するを選択する。

image.png

うまくいけばこの画面に

使い方

基本的に pageant を利用する。
最後に簡単に触れるが、Windows Native の ssh コマンドや、WSL2上のLinuxから利用するには pageant を使うのが楽。

VSCode や git なども連動するのでオススメ

pageant の登録

pageant.exe を起動させ、タスクトレイのアイコンを開く

image.png

Add FIDO Keyを押下し、

image.png

さっき作った鍵を選択する

image.png

登録されたら鍵を選択し、Copy To Clipboard を押下し公開鍵を取得する

sk-ecdsa-sha2-nistp256@openssh.com AAAAwaevi1ieta6tohNg5cae5hoh3ix1vaiwoh3leejeezohghai6Aecheeki7uVurer7yahNahs8kuwaiGae9oocooxaelagaip9SohbeiduFiem1ooW2shaj1phai0ienahmooxaith8Rahrohwoozoob7jaiKahch3aek6phaixiNooph4naish9zoonohxai1pheeng  FIDO:ssh:hogehoge ssh:hogehoge

こんな感じの公開鍵が得られるので、これをログインしたいサーバの authorized_keys に追記する。

ssh を用いたログイン方法

authorized_keys に登録されており、pageantの鍵リストに登録されているのならば、puttyを用いて通常通りにsshすればよい

実際に ssh ログインを試みると

image.png

putty から pageant に鍵利用のリクエストが行くので、
pageantの署名確認画面を押下(これはPageantのオプションで有効にしている場合)

pageantからWindowsへパスキー利用のリクエストが行き、

image.png

今回はスマホに保存したので
iPhone, iPad, または Android デバイスを選択して次へ

image.png

QRコードが出てくるので、登録したスマホで読み込み、生体認証を行う。

これでログインできる。

Windows Native SSHやWSLのサポート

詳しくは @slotport さんのこの記事にしっかり書かれているので、こちらを
https://qiita.com/slotport/items/e1d5a5dbd3aa7c6a2a24

基本的には

WSL2から使うならこれを

Windows Native sshから使うなら、これ入れて、Windowsのユーザ環境変数SSH_AUTH_SOCK=\\.\pipe\ssh-pageantを追加すれよい

欠点

ここで作った鍵を他のWindows端末で使う方法が公式にない!!!

PuTTYのレジストリに登録があるので、これをエクスポートして利用したいWindowsPCでインポートすると、別のWindowsでも使えることを確認したが……

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Fido

image.png

まぁ、鍵ファイルを運ぶ代わりにレジストリファイルを運ぶと思えばよいのかな……

備考

おそらく ssh サーバの設定 sshd_config で

AuthenticationMethods publickey
PubkeyAcceptedKeyTypes sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com

と PublicKey のみ、かつ、sk-から始まる鍵を指定することで、一般的なMFAレベルを強制できるんじゃないかと思う

とはいえ、セキュリティキーをエミュレートするなんて簡単だし、
ハードウェアセキュアエレメントをちゃんと運用するとなると大変そうだよね

クラウドのご時世だし、GoogleやMSアカウントを使った認証へとシフトしてくれないかな?
Azureならこんなのあるし

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0