macOS Ubuntu に続いてFreeBSD12でed25519-sk鍵タイプを試していきます。
1 2 3 4 5 |
% uname -a FreeBSD principium 12.2-RELEASE-p7 FreeBSD 12.2-RELEASE-p7 GENERIC amd64 % ssh -V OpenSSH_7.9p1, OpenSSL 1.1.1h-freebsd 24 Aug 2021 |
Contents
FreeBSD: 準備
YubiKeyの選択の仕方は前置きをご覧ください。青いYubiKeyでもFIDO U2FかFIDO2の機能があれば使えるはずです。今回は主にfirmware 5.2.4の青いSecurity Keyシリーズで確認しています。5.2.3未満の場合はecdsa-skでお試しください。 ecdsa-skはP-256楕円曲線だけなので使う理由があるのかは謎です。
2022-09-27追記: FreeBSD 13.1でbaseが-sk対応になったので、以下のportsの作業は不要です。
1 2 3 4 5 |
% uname -a FreeBSD principium 13.1-RELEASE-p2 FreeBSD 13.1-RELEASE-p2 GENERIC amd64 % /usr/bin/ssh -V OpenSSH_8.8p1, OpenSSL 1.1.1o-freebsd 3 May 2022 |
FreeBSD 13でもbaseのOpenSSHのバージョンが-sk非対応のバージョンなので、さくっとportsの security/openssh-portable を使います。FIDO_U2Fオプションがあり、チェックを付けた場合はlibfido2もインストールされました。
普段使い用にはaliasするくらいがちょうどよいでしょうか。
1 2 3 4 5 6 7 |
% ssh -V OpenSSH_8.6p1, OpenSSL 1.1.1h-freebsd 24 Aug 2021 % \ssh -V OpenSSH_7.9p1, OpenSSL 1.1.1h-freebsd 24 Aug 2021 % fido2-token -L |
YubiKeyを見つけてもらえません。
FreeBSD: クライアント側準備
ktraceであたりをつけると /dev/uhid の権限のようなのでスーパーユーザ権限では表示されることを確認したのち /etc/devfs.rules を作成します。
1 2 |
[system=10] add path 'uhid*' mode 0660 group operator |
devfsを再実行し、 operatorグループにYubiKeyを使うユーザを追加します。
1 2 3 4 5 6 7 8 |
# service devfs restart # ls -la /dev/uhid* crw-rw---- 1 root operator 0x7a Sep 29 17:31 /dev/uhid0 # pw groupmod operator -m est # exit |
ログインしなおして再確認します。
1 2 |
% fido2-token -L /dev/uhid0: vendor=0x0b5d, product=0x0000 (FreeBSD uhid(4)) |
良さそうです。
FreeBSD: クライアント側
クライアント側を整えていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
% 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: You may need to touch your authenticator (again) to authorize key generation. 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:tdKJaDHuUWSdPrnYn2gV93w91aQ0nQB3odzdNuFV4JE est@tranquility The key's randomart image is: +[ED25519-SK 256]-+ | o. o.o+B*| | o o o.EoB| | o .... +.B=| | . = ++o. o.+| | = So+o o oo| | o ...o . .=| | . + . o| | o o | | . | +----[SHA256]-----+ |
まずYubiKeyのFIDO2 PINを訊かれます。入力するとピカピカ光ってタッチを要求されます。タッチすると鍵情報を保存するファイル名を訊かれます。入力すると鍵情報ファイルを暗号化するためのパスフレーズを訊かれます。このパスフレーズは-O residentを指定した場合のYubiKey内の鍵情報には適用されません。あくまでもファイル(ここでは鍵ハンドルが格納されている~/.ssh/id_ed25519_sk)の暗号化のためのものです。今回はFIDO2の-O verify-required も含めて-Oオプションは指定しないで進行します。
デスクトップ環境で使うことがなくなってしまったので、素のssh-agentの使い方です。GNOMEであればUbuntuと同様、そのほかのwindow managerであれば /etc/Xsession.d/ からssh-agentやその代替が起動しているかと思うので、適宜調整してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
% ps auxwwww | fgrep ssh est 13922 0.0 0.2 17600 8456 - S 10:08 0:00.59 sshd: est@pts/0 (sshd) est 76192 0.0 0.2 17600 8324 - S 14:38 0:00.05 sshd: est@pts/1 (sshd) est 93790 0.0 0.1 11192 2720 0 S+ 15:37 0:00.00 fgrep ssh % ps auxwwww | fgrep key est 93801 0.0 0.1 11192 2720 0 S+ 15:37 0:00.00 fgrep key % echo $SHELL /bin/tcsh % eval `ssh-agent` Agent pid 93982 % ssh-add -l The agent has no identities. |
FreeBSD: サーバ側
公開鍵をサーバまで持っていきログインするユーザの ~/.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 |
設定はこれだけ。同じ機械でSSHサーバも動作させる場合はパスワードでのログインを無効、スーパーユーザーのログインを無効、など適切に設定してください。HostKeyを明示している場合はEd25519用の鍵を明示します。portsのsshdを使う場合は混乱しないようにbaseのsshdを止めた方がよいかもしれません。お好みのrc.confの修正方法で sshd_enable=”NO” と openssh_enable=”YES” で自動起動を設定します。
FreeBSD: 接続
接続です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
% 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:tdKJaDHuUWSdPrnYn2gV93w91aQ0nQB3odzdNuFV4JE User presence confirmed Last login: Mon Oct 25 14:38:34 2021 from 192.168.108.76 % exit logout Connection to ::1 closed. % ssh -i ~/.ssh/id_ed25519_sk -F /dev/null -p 8022 ::1 Enter passphrase for key '/home/est/.ssh/id_ed25519_sk': Confirm user presence for key ED25519-SK SHA256:tdKJaDHuUWSdPrnYn2gV93w91aQ0nQB3odzdNuFV4JE User presence confirmed Last login: Mon Oct 25 15:46:26 2021 from ::1 est@tranquility:~ % exit logout Connection to ::1 closed. |
まず鍵ハンドルファイルのパスワードを訊かれ、入力するとYubiKeyがピカピカし始めるので、タッチすればログインできます。念のため繰り返して、再度パスワードを訊かれることを確認しました。続いてssh-agentを試します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
% ssh-add -l The agent has no identities. % ssh-add ~/.ssh/id_ed25519_sk Enter passphrase for /home/est/.ssh/id_ed25519_sk: Identity added: /home/est/.ssh/id_ed25519_sk (est@tranquility) % ssh -i ~/.ssh/id_ed25519_sk -F /dev/null ::1 Last login: Mon Oct 25 15:46:41 2021 from ::1 % exit logout Connection to ::1 closed. % ssh -i ~/.ssh/id_ed25519_sk -F /dev/null ::1 Last login: Mon Oct 25 15:55:53 2021 from ::1 est@tranquility:~ % exit logout Connection to ::1 closed. |
ssh-add した際に訊かれたパスワードを最後に、あとはしれっとYubiKeyが点滅するのでタッチするだけです。試すまでもなくFIDO2のdiscoverable credentialsもUbuntu同様当たり前のように使えるかと思います。
以上 macOS Ubuntu に続いてFreeBSDでした。次はCygwinです。ごきげんよう。