FIDO及びU2FデバイスによるSSH認証のサポート
「Ubuntu 20.04 LTS」では、「OpenSSH」に最新の「OpenSSH 8.2」を採用しています。これにより「SSH」で「FIDO(Fast Identity Online)」や「U2F(Universal Second Factor)」デバイスによる認証がサポートされ、これらのデバイスによる認証を利用できるようになりました。
もう一つの認証方法
これらの認証デバイスを利用しもう一つの認証方法を活用することで、ユーザーは認証基盤に強力で利用しやすい認証メカニズムを加えることができます。ユーザーは鍵を配置しデバイスにタッチするだけで、ログインすることもできます。
「FIDO」及び「U2F」の利用を検討しているサーバーの管理者は、この仕組みに対応した新しいキータイプをサポートする「OpenSSH 8.2」以降の「OpenSSH」を使用するだけで対応できます。
新しい公開鍵と証明書
これらの認証デバイスを利用するには、認証デバイスをサポートする新しい種類の公開鍵と証明書を使用します。公開鍵の種類では「ecdsa-sk」もしくは「ed25519-sk」を使用します。
秘密鍵と公開鍵のファイルの扱われ方は、従来と変わりありません。
ユーザーは引き続き秘密鍵にパスフレーズを設定することも可能です。
認証デバイスを利用した認証を加えることで、秘密鍵だけでは認証を行えなくなります。
つまり秘密鍵の漏洩に対し、セキュリティーの脅威を軽減することができます。
OpenSSHの認証デバイスのサポートについて
「OpenSSH」の認証デバイスのサポートについては、「OpenSSH 8.2」のリリースノートを参照してください。上記リリースノートの「FIDO/U2F Support」以降の項に、認証デバイスのサポートに関する記述があります。
セットアップの例
「OpenSSH」を利用したセットアップの例です。1.認証デバイスの接続
まず認証デバイスをPCに接続します。2.鍵の生成
鍵の種類を指定して、鍵を生成します。ここでは例として鍵の種類に「ecdsa-sk」を指定しています。
ssh-keygen -t ecdsa-sk
後は対話的に鍵の生成処理が行われます。
また途中で認証デバイスのタッチが要求されます。
ubuntu@focal-openssh-client:~$ ssh-keygen -t ecdsa-sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator
to authorize key generation.
Enter file in which to save the key
(/home/ubuntu/.ssh/id_ecdsa_sk):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/home/ubuntu/.ssh/id_ecdsa_sk
Your public key has been saved in
/home/ubuntu/.ssh/id_ecdsa_sk.pub
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator
to authorize key generation.
Enter file in which to save the key
(/home/ubuntu/.ssh/id_ecdsa_sk):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/home/ubuntu/.ssh/id_ecdsa_sk
Your public key has been saved in
/home/ubuntu/.ssh/id_ecdsa_sk.pub
生成された秘密鍵と公開鍵が、以下のように作成されています。
ubuntu@focal-openssh-client:~$ l .ssh/id_ecdsa_sk*
-rw------- 1 ubuntu ubuntu 610 mar 30 17:58 .ssh/id_ecdsa_sk
-rw-r--r-- 1 ubuntu ubuntu 221 mar 30 17:58 .ssh/id_ecdsa_sk.pub
-rw------- 1 ubuntu ubuntu 610 mar 30 17:58 .ssh/id_ecdsa_sk
-rw-r--r-- 1 ubuntu ubuntu 221 mar 30 17:58 .ssh/id_ecdsa_sk.pub
3.公開鍵の登録
後は従来通り「ssh-copy-id」コマンドを使用して、接続先のサーバーにクライアントの公開鍵を登録します。(サーバーの「~/.ssh/authorized_keys」ファイルに公開鍵を登録します。)
これで準備完了です。
4.SSHでサーバーに接続
「SSH」でサーバーに接続します。
ssh -i .ssh/id_ecdsa_sk 10.0.100.75
途中で認証デバイスのタッチが要求され、認証に成功すれば接続が完了します。
認証デバイスのタッチが要求されるタイミングは、「Confirm user presence」が出力されるタイミングです。
Confirm user presence for key ECDSA-SK
(...)
Welcome to Ubuntu Focal Fossa (development branch)
(GNU/Linux 5.4.0-18-generic x86_64)
(...)
Last login: Mon Mar 30 20:29:05 2020 from 10.0.100.1
ubuntu@focal-openssh-server:~$
(...)
Welcome to Ubuntu Focal Fossa (development branch)
(GNU/Linux 5.4.0-18-generic x86_64)
(...)
Last login: Mon Mar 30 20:29:05 2020 from 10.0.100.1
ubuntu@focal-openssh-server:~$
認証デバイスのタッチに進まない不具合
上記の「4.」で認証デバイスのタッチが要求されていますが、「GNOME」環境だとこのタイミングから先に進まなくなります。この不具合は以下で報告されています。
不具合の修正状況や進捗は、上記不具合報告の内容を参照してください。