FIDO/U2Fの2段階認証向けにリリースされた公開鍵を試してみたくなりました。 ただmacで試そうともOpenSSHバージョンがデフォルトでは合っていなかったのでバージョンアップすることで対応できるようにしました。
FIDO/U2Fの証明書はssh-keygen
で生成できます。
user@localhost ~ % ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
unknown key type ecdsa-sk
しかしmacで生成しようとするとunknown key type ecdsa-sk
とエラーが発生して生成できませんでした。
user@localhost ~ % ssh -V
OpenSSH_8.1p1, LibreSSL 2.7.3
OpenSSHのバージョンを確認するとOpenSSH_8.1p1
です、OpenSSH 8.2
以上からしかFIDO/U2Fの証明書に対応していないためアップデートする必要があります。
macのOpenSSHをアップデートはbrew経由で行えます。 https://formulae.brew.sh/formula/openssh
brew install openssh
ターミナルを立ち上げ直すと
user@localhost ~ % ssh -V
OpenSSH_8.3p1, OpenSSL 1.1.1g 21 Apr 2020
これで先ほどのコマンドが叩けるようになりました。
user@localhost ~ % ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ecdsa_sk
Your public key has been saved in |/.ssh/id_ecdsa_sk.pub
The key fingerprint is:
SHA256:UVNEPjnN4SMxV76/aO1843pahM5W2qWE6k3YL66x7S8 user@localhost
The key's randomart image is:
+-[ECDSA-SK 256]--+
| o+* o..|
| . o O o |
| . * = .|
| . =...|
| S ...+.|
| +o.=.o|
| + o=oo.|
| . *Eo++o|
| ++*BO=o|
+----[SHA256]-----+
これでキーの生成ができるようになりました。 あとはサーバーの受け口も対応すれば繋がるようになるかな。