YubiOn
(更新: April 28, 2026)
執筆者: Vy

FIDOセキュリティーキーでLinux SSHアクセスの強化

更新日:2022年12月7日

前回FIDO2セキュリティーキーで GitHub SSHアクセス強化 (yubion.com)を紹介いたしましたが、GitHub以外の環境でもFIDOセキュリティーキーでSSHアクセスできるでしょうか?

OpenSSH 8.2の新機能により、すべてのLinuxサーバー(Ubuntu、Debian、CentOS、Fedoraなど)のユーザーがSSHでFIDOセキュリティーキーを使用できるようになりました。

今回の記事は、YubiKeyを使用したLinuxサーバーへのSSHアクセスを紹介いたします。

環境:

  • OS: Linux Ubuntu 20.04(クライアントとサーバー)
  • YubiKey 5 NFC

SSHアクセス設定:

SSHキーペア生成と使用は、今までの方法と非常によく似ています。

  1. YubiKeyをUSBポートに挿し込んでおきます。
  2. ターミナルを開いて、以下のコマンドを入力して、SSHキーを生成します。

「sk」はセキュリティーキー(security key)です。

$ ssh-keygen -t ed25519-sk

  • 注意:コマンドが失敗し、「invalid format(無効な形式)」または「feature not supported(機能をサポートしていない)」というエラーが表示される場合、ed25519をサポートしていないセキュリティーキーを使用している可能性があります。ed25519代わりに、ecdsaを試してください。

今回使っているYubiKey 5 NFCのフォームウェアは5.1.2なので、ed25519のキーを生成できないため、ecdsaのキーを生成しました。

Ed25519キーを使いたい方はYubiKeyフォームウェア5.2.3以降をご使用ください。

YubiKey ManagerでYubiKeyのフォームウェアを確認

  1. YubiKeyのFIDO2 PINを入力し、キーをタッチします。

  2. 「Enter a file in which to save the key」が表示されたら、Enterキーを押して、公開鍵をデフォルトのファイルの場所に保存します。

  3. 公開鍵ファイルのパスワードを作成します。

SSHキー生成の例

  1. 生成した「id_ecdsa_sk.pub」ファイルから、SSHの公開鍵をコピーして、接続したいサーバーの「~/.ssh/authorized_keys」ファイルに追加します。

FIDOセキュリティーキーでSSHアクセス:

  1. YubiKeyをUSBポートに挿し込んでおきます。
  2. ターミナルを開いて、サーバーにアクセスします。

$ ssh user@server_ip

  1. 秘密鍵ファイルのパスワードを入力し、YubiKeyをタッチします。

サーバーへのアクセスの例

上のイメージのように表示されたら、GitHubのように2要素認証としてFIDOセキュリティーキーを使ったSSHアクセスの設定が完了しました。

  1. さらに、パスワードなしでログインしたい場合、「Automatically unlock this key whenever I’m logged in」のチェックをオンにして、最初のログイン時だけパスワードが必要になります。

まだまだ終わりませんよ

FIDOセキュリティーキーを正常に設定した後、ユーザーパスワードログインを無効にして、キーを持っている人だけがサーバーにアクセスできるようにしたいでしょうか?

  1. リモートサーバーでコマンドを実行して、SSHデーモン構成ファイルを編集します。

$ sudo nano /etc/ssh/sshd_config

  1. #PasswordAuthentication yes」行のコメントを解除して、「no」に変更して、以下のようになります。

SSHデーモン構成ファイルの例

  1. Ctrl + Xを押し(編集終了)、「y」と入力し(ファイル保存の確認)、Enterキーを押して(ファイル名の確認)ファイルを保存します。

  2. 最後にSSHをリロードします。

$ sudo systemctl reload ssh

その後、FIDOセキュリティーキーを使用せずにサーバーに接続すると、以下のようにエラーが表示されます。

エラーの例

最後に:

今回YubiKeyを使用したLinuxへのSSHアクセスを紹介しました。これで秘密鍵をハードウェアセキュリティーキーに保存し、簡単で、安全な2要素認証、または1要素認証を運用できると思います。

しかし、Windows 10のOpenSSHバージョンはまだ8.1なので、クライアントはWindows 10の場合、残念ながらFIDOセキュリティーキーを使えません。

代わりに、YubiKeyのPIV機能を使って、「SSHの秘密鍵をYubiKeyで管理 Windows編 (yubion.com)」できます。