Blog article

Blog article

  • Vy

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

前回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のフォームウェアを確認

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

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

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


SSHキー生成の例


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


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

  1. YubiKeyをUSBポートに挿し込んでおきます。

  2. ターミナルを開いて、サーバーにアクセスします。

$ ssh user@server_ip

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


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


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


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


まだまだ終わりませんよ

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

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

$ sudo nano /etc/ssh/sshd_config

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


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


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

4. 最後に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)」できます。