Blog article

Blog article

  • Vy

FIDO2セキュリティーキーで GitHub SSHアクセス強化

2021年8月13日以降、GitHubはGit操作におけるパスワード認証を廃止し、個人アクセストークン、SSHキー(開発者向け)、OAuthまたはGitHubアプリインストールトークンなどの強力な認証を必須にしたという発表がありました。 (https://github.blog/2021-08-16-securing-your-github-account-two-factor-authentication/


また、2021年5月に、Git操作のSSH認証は、従来の公開鍵と秘密鍵のペアの代わりに、FIDOセキュリティーキーをサポートしたということも発表しました。 (Security keys are now supported for SSH Git operations | The GitHub Blog

SSHキー生成の時、秘密鍵はPCではなく、セキュリティーキーに保存されます。そして、認証の時、キーにタッチするのも必要です。


つまり、GitHubのウェブサービスとGit操作どちらでも同じYubiKeyを使って、2要素認証を行えます。

GitHubのウェブサービスの2要素認証を設定するには、GitHubでYubiKeyの二要素認証を設定 (yubion.com)をご参照ください。


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


環境:

  • OS: Windows

  • Security Key by Yubico with NFC


鍵の生成:

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

 1. YubiKeyをUSBポートに挿し込んでおきます。  2. 管理者としてGit Bashを開きます。    (WindowsにはFIDO2セキュリティーにアクセスするには管理者権限が必要です。)  3. 以下のコマンドを入力して、SSHキーを生成します。

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

   $ ssh-keygen -t ed25519-sk -C "your_email@example.com"

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

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

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


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

 4. YubiKeyのFIDO2 PINを入力し、キーをタッチします。  5. 「Enter a file in which to save the key」が表示されたら、Enterキーを押して、    公開鍵をデフォルトのファイルの場所に保存します。  6. 公開鍵ファイルのパスワードを作成します。


SSHキー生成の例


GitHubアカウントに新しいSSHキーを追加:

SSHキーが生成されたら、他のSSHキーと同じように、新しいキーをアカウントに追加します。下記はGitHub.comのサイトにSSHキーを追加する方法です。

 1. 先ほど生成した「id_ecdsa_sk.pub」ファイルから、SSHの公開鍵をコピーします。  2. GitHub.comにアクセスし、設定ページを開き、「SSHとGPGキーのページ」に移動し、    コピーした公開鍵を新しいキーに貼り付けて、追加します。

SSHキー追加の例


SSHアクセス確認:

 1. YubiKeyをUSBポートに挿し込んでおきます。  2. 管理者としてGit Bashを開きます。    (WindowsにはFIDO2セキュリティーにアクセスするには管理者権限が必要です。)  3. 以下のコマンドを入力して、SSHキーアクセスを確認します。

   $ ssh -T git@github.com  4. 公開鍵ファイルのパスワードを入力し、YubiKeyをタッチします。

SSHアクセス確認の例

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

最後に:

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

しかし、いくつか足りない所もあるようですね。

 1. FIDO2のPINはSSHキー生成の時だけ要求されます。

また、FIDO2のPINを使うには、前提として、PIN設定が必要です。

   PINをまだ設定していないFIDO2セキュリティーキー、またはFIDO U2Fのみのキーは    PIN認証のステップはなくなって、キータッチだけになります。  2. FIDO2生体認証まだサポートしていません。