macOSに続いてUbuntu 20.04 LTSでed25519-sk鍵タイプを試していきます。
1 2 3 4 5 6 7 8 9 |
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal $ ssh -V OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f 31 Mar 2020 |
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は不要です。
1 2 3 4 5 6 |
$ sudo apt install openssh-client openssh-server libfido2-1 fido2-tools Reading package lists... Done ..... $ fido2-token -L /dev/hidraw0: vendor=0x1050, product=0x0120 (Yubico Security Key by Yubico) |
良さそうです。
Ubuntu: クライアント側
クライアント側を整えていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ ssh-keygen -t ed25519-sk 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/est/.ssh/id_ed25519_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/est/.ssh/id_ed25519_sk Your public key has been saved in /home/est/.ssh/id_ed25519_sk.pub The key fingerprint is: SHA256:x8znliA8e88Cr3lTMGP9oaAEzvxlfFa/NYhGbJu6xyk est@mors The key's randomart image is: +[ED25519-SK 256]-+ | . | | . + . | | + . .o.+... | | +..+X=+...o| | oS=OB.o .+| | +* +o... | | .o+.= | | E=B | | ooooo | +----[SHA256]-----+ |
まずYubiKeyのFIDO2 PINを訊かれます。入力するとピカピカ光ってタッチを要求されます。タッチすると鍵情報を保存するファイル名を訊かれます。入力すると鍵情報ファイルを暗号化するためのパスフレーズを訊かれます。このパスフレーズは-O residentを指定した場合のYubiKey内の鍵情報には適用されません。あくまでもファイル(ここでは鍵ハンドルが格納されている~/.ssh/id_ed25519_sk)の暗号化のためのものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ sudo ps -ef | fgrep ssh root 1557 1 0 11:07 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups est 13483 13336 0 12:37 pts/0 00:00:00 grep -F --color=auto ssh $ sudo ps -ef | fgrep keyring est 12609 1 0 12:37 ? 00:00:00 /usr/bin/gnome-keyring-daemon --daemonize --login est 13488 13336 0 12:37 pts/0 00:00:00 grep -F --color=auto keyring $ set | fgrep SSH $ eval $(gnome-keyring-daemon --replace --components ssh) ** Message: 12:38:36.976: Replacing daemon, using directory: /run/user/2323/keyring $ set | fgrep SSH SSH_AUTH_SOCK=/run/user/2323/keyring/ssh _=SSH_AUTH_SOCK=/run/user/2323/keyring/ssh $ export SSH_AUTH_SOCK $ ssh-add -l The agent has no identities. |
macOSのKeychainのような構造ではなく、-sk未対応などどということもないのでそままGNOME Keyringを使います。ありがたいです。Keyring不要な場合はもちろんssh-agentを動作させればOKです。
Ubuntu: サーバ側
公開鍵をサーバまで持っていきログインするユーザの ~/.ssh/authorized_keys に追加、無ければ作成して追加します。
1 2 3 4 |
% mkdir -p ~/.ssh % chmod go= ~/.ssh % echo >>~/.ssh/authorized_keys % cat id_ed25519_sk.pub >>~/.ssh/authorized_keys |
設定はこれだけでサーバもそのまま利用できます。パスワードでのログインを無効、スーパーユーザーのログインを無効、など適切に設定してください。HostKeyを明示している場合はEd25519用の鍵を明示します。
Ubuntu: 接続
接続です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ ssh -i ~/.ssh/id_ed25519_sk -F /dev/null ::1 Enter passphrase for key '/home/est/.ssh/id_ed25519_sk': Confirm user presence for key ED25519-SK SHA256:x8znliA8e88Cr3lTMGP9oaAEzvxlfFa/NYhGbJu6xyk Last login: Fri Oct 22 17:57:42 2021 from ::1 $ exit ログアウト Connection to ::1 closed. $ ssh -i ~/.ssh/id_ed25519_sk -F /dev/null ::1 Enter passphrase for key '/home/est/.ssh/id_ed25519_sk': Confirm user presence for key ED25519-SK SHA256:x8znliA8e88Cr3lTMGP9oaAEzvxlfFa/NYhGbJu6xyk Last login: Mon Oct 25 13:04:52 2021 from ::1 $ exit ログアウト Connection to ::1 closed. |
まず鍵ハンドルファイルのパスワードを訊かれ、入力するとYubiKeyがピカピカし始めるので、タッチすればログインできます。念のため繰り返して、再度パスワードを訊かれることを確認しました。続いてssh-agentを試します。
1 2 3 4 5 6 7 8 9 |
$ ssh-add ~/.ssh/id_ed25519_sk Enter passphrase for /home/est/.ssh/id_ed25519_sk: Identity added: /home/est/.ssh/id_ed25519_sk (est@mors) $ ssh -F /dev/null ::1 Last login: Mon Oct 25 13:05:03 2021 from ::1 $ exit ログアウト Connection to ::1 closed. |
ssh-add した際に訊かれたパスワードを最後に、あとはしれっとYubiKeyが点滅するのでタッチするだけです。
あっけなく完了したのでFIDO2のdiscoverable credentialsを試します。
-O residentによるdiscoverable credentials
まずは先程追加した鍵がKeyringに残っているので、「パスワードと鍵(Seahorse)」のOpenSSH鍵より削除します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ ssh-keygen -t ed25519-sk -O resident 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/est/.ssh/id_ed25519_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/est/.ssh/id_ed25519_sk Your public key has been saved in /home/est/.ssh/id_ed25519_sk.pub The key fingerprint is: SHA256:QLk+wF9oeOZBBlIXzdlI1SzWvnG02JnTJNZsncaPcW8 est@mors The key's randomart image is: +[ED25519-SK 256]-+ | ..o.+*.=.+ .oo| | . o+ = + + =+B| | . +.o . o =.%o| | + B.. + O E| | O oS + o | | = . | | . | | | | | +----[SHA256]-----+ |
FIDO2 PINを訊かれるので入力します。YubiKeyがピカピカし始めるのでタッチします。鍵ハンドルファイルのパスワードを訊かれるので入力しますが使うことはありません。出来上がったファイルは公開鍵(.pub)も含めて使わないでやってみます。YubiKeyをサーバに刺してサーバ側に公開鍵を追加する操作をします。macOS付属のssh-addでは-KオプションがKaychainに保存するために使われているので、将来のmacOSではKeychain用のオプションは-Kではなくなる可能性があります。
2021-11-21追記: Montereyより –apple-use-keychain に変わりました。以下のようなメッセージが表示されます。
1 2 3 4 5 6 |
$ ssh-add -K WARNING: The -K and -A flags are deprecated and have been replaced by the --apple-use-keychain and --apple-load-keychain flags, respectively. To suppress this warning, set the environment variable APPLE_SSH_ADD_BEHAVIOR as described in the ssh-add(1) manual page. |
1 2 3 4 5 6 7 8 9 10 11 |
$ ssh-add -l The agent has no identities. $ ssh-add -K Enter PIN for authenticator: Resident identity added: ED25519-SK SHA256:GBtAySoSJylx/1uioAqPj7WuDWVRndmBfOKqHvsIWIE $ ssh-add -l 256 SHA256:GBtAySoSJylx/1uioAqPj7WuDWVRndmBfOKqHvsIWIE (ED25519-SK) $ ssh-add -L >> ~/.ssh/authorized_keys |
訊かれたのはFIDO2 PINのみです。再度クライアント側にYubiKeyを刺し、同様の操作をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ ssh-add -l The agent has no identities. $ ssh-add -K Enter PIN for authenticator: Resident identity added: ED25519-SK SHA256:GBtAySoSJylx/1uioAqPj7WuDWVRndmBfOKqHvsIWIE $ ssh-add -l 256 SHA256:GBtAySoSJylx/1uioAqPj7WuDWVRndmBfOKqHvsIWIE (ED25519-SK) $ ssh -F /dev/null ::1 Last login: Mon Oct 25 13:29:20 2021 from ::1 $ exit ログアウト Connection to ::1 closed. |
FIDO2 PINとタッチだけでログインできました。
以上macOSに続いてUbuntuでした。次はFreeBSD、その次はCygwinです。ごきげんよう。