YubiKeyとSSH – Ubuntu

macOSに続いてUbuntu 20.04 LTSでed25519-sk鍵タイプを試していきます。

今回検証に使っているFIDO U2F機能をもつデバイスたち

Contents

Ubuntu: 準備

YubiKeyの選択の仕方は前置きをご覧ください。青いYubiKeyでもFIDO U2FかFIDO2の機能があれば使えるはずです。今回は主にfirmware 5.2.4の青いSecurity Keyシリーズで確認しています。5.2.3未満の場合はecdsa-skでお試しください。 ecdsa-skはP-256楕円曲線だけなので使う理由があるのかは謎です。

OpenSSH 8.2p1(クライアント, サーバ)なのでそのまま使えます。libfido2を追加でインストールします。fido2-token -Lで確認する必要が無ければfido2-toolsは不要です。

良さそうです。

Ubuntu: クライアント側

クライアント側を整えていきます。

まずYubiKeyのFIDO2 PINを訊かれます。入力するとピカピカ光ってタッチを要求されます。タッチすると鍵情報を保存するファイル名を訊かれます。入力すると鍵情報ファイルを暗号化するためのパスフレーズを訊かれます。このパスフレーズは-O residentを指定した場合のYubiKey内の鍵情報には適用されません。あくまでもファイル(ここでは鍵ハンドルが格納されている~/.ssh/id_ed25519_sk)の暗号化のためのものです。

macOSのKeychainのような構造ではなく、-sk未対応などどということもないのでそままGNOME Keyringを使います。ありがたいです。Keyring不要な場合はもちろんssh-agentを動作させればOKです。

Ubuntu: サーバ側

公開鍵をサーバまで持っていきログインするユーザの ~/.ssh/authorized_keys に追加、無ければ作成して追加します。

設定はこれだけでサーバもそのまま利用できます。パスワードでのログインを無効、スーパーユーザーのログインを無効、など適切に設定してください。HostKeyを明示している場合はEd25519用の鍵を明示します。

Ubuntu: 接続

接続です。

まず鍵ハンドルファイルのパスワードを訊かれ、入力するとYubiKeyがピカピカし始めるので、タッチすればログインできます。念のため繰り返して、再度パスワードを訊かれることを確認しました。続いてssh-agentを試します。

ssh-add した際に訊かれたパスワードを最後に、あとはしれっとYubiKeyが点滅するのでタッチするだけです。

あっけなく完了したのでFIDO2のdiscoverable credentialsを試します。

-O residentによるdiscoverable credentials

まずは先程追加した鍵がKeyringに残っているので、「パスワードと鍵(Seahorse)」のOpenSSH鍵より削除します。

Seahorse

FIDO2 PINを訊かれるので入力します。YubiKeyがピカピカし始めるのでタッチします。鍵ハンドルファイルのパスワードを訊かれるので入力しますが使うことはありません。出来上がったファイルは公開鍵(.pub)も含めて使わないでやってみます。YubiKeyをサーバに刺してサーバ側に公開鍵を追加する操作をします。macOS付属のssh-addでは-KオプションがKaychainに保存するために使われているので、将来のmacOSではKeychain用のオプションは-Kではなくなる可能性があります。

2021-11-21追記: Montereyより –apple-use-keychain に変わりました。以下のようなメッセージが表示されます。

訊かれたのはFIDO2 PINのみです。再度クライアント側にYubiKeyを刺し、同様の操作をします。

FIDO2 PINとタッチだけでログインできました。

以上macOSに続いてUbuntuでした。次はFreeBSD、その次はCygwinです。ごきげんよう。

コメントを残す

メールアドレスが公開されることはありません。