本文へスキップ
>_ITDITDセキュリティ対策プラットフォーム

セキュリティ対策

GitHubの2段階認証(2FA)を設定する:認証アプリ・パスキー・リカバリーコードと、スマホをなくしたときの復旧

GitHubの2段階認証(2FA)の設定手順を、GitHub Docsにもとづいて解説。認証アプリ(TOTP)を主にしてパスキーを予備に足す順番、リカバリーコードの保管、スマホをなくしたときの復旧(審査に最大3営業日)、SMSからの切り替え、あわせて見直す設定まで。

公開日 2026-10-06 更新日 2026-10-06 最終確認 2026-10-06 27分で読める

対象:自分のGitHubアカウントに2段階認証(2FA:パスワードに加えて、手元のアプリや鍵で本人確認する仕組み)を設定したい人、GitHubから「2FAを有効にしてください」という通知を受け取った人、スマホを替えたりなくしたりして認証コードが出せない人。本記事はGitHub Docs(公式ドキュメント)の記述にもとづく手引きです。GitHubの画面は英語表示なので、ボタン名は画面の英語で書き、必要に応じてGitHub Docs日本語版の表記を添えます。

GitHubの2FAは誰に必須か

GitHubは2023年3月から、GitHub.comでコードを投稿するユーザーを対象に、グループごとに順番に2FAを必須化しています。GitHub Docsが挙げる対象の条件は次のとおりです。

  • アプリやActionを他のユーザー向けに公開した
  • リポジトリでリリースを作成した
  • 重要度の高いリポジトリ(Open Source Security Foundationが追跡するプロジェクトなど)にコントリビュートした、またはその管理者・共同作成者である
  • リポジトリやほかのユーザーを含む組織(Organization)のオーナーである
  • パッケージを公開したリポジトリの管理者・共同作成者である
  • エンタープライズの管理者である

GitHubは、これらの条件は今後変わる可能性があるとしています。対象に選ばれると通知メールが届き、45日の登録期間が始まり、GitHub.com上にバナーが表示されます。通知を受け取っていない人は必須の対象ではありませんが、有効にすることが強く推奨されています。

45日
必須化の通知から登録期限まで
7日
期限後の猶予(過ぎると2FAを有効にするまで利用不可)
28日
設定後の動作確認(チェックアップ)の期間
16個
リカバリーコードの数(各1回だけ使える)

猶予の7日を過ぎると、2FAを有効にするまでGitHub.comにアクセスできなくなります。一方で、すでに発行済みのpersonal access token(API用のトークン)やOAuthトークンは、自動処理を止めないために使い続けられます。ただしロックされた状態では、新しいアプリの承認や新しいトークンの作成はできません。

メールでの確認は2FAに数えられない

2FAを設定していないアカウントでは、新しい端末からのサインイン時にメールで確認コードが届くことがあります。GitHub Docsは、このメール確認は2FAとして扱わないと明記しています。

理由は、メールの受信箱を乗っ取られると、パスワードのリセットとメール確認の両方を通過されてしまうからです。2つ目の要素はメールとは別のもの(認証アプリやパスキー)である必要があります。

どの方法を使うか

GitHubで使える2FAの方法は5つあります。GitHub Docsは、認証アプリ(TOTP)を主な方法にし、パスキーかセキュリティキーを予備として追加する構成を推奨しています。パスキーやセキュリティキーがなければ、GitHub Mobileアプリも予備として適しているとしています。

方法最初の方法として設定できるかGitHub Docsの位置づけ注意点
認証アプリ(TOTP)できる主な方法として推奨クラウドにバックアップできるアプリが推奨されている
SMS(テキストメッセージ)できる推奨しない傍受されやすく、フィッシングに弱い。日本は対応国
パスキーできない(TOTPかSMSの後)予備として推奨パスワードと2FAを1回の操作で済ませられる
セキュリティキーできない(TOTPかSMSの後)予備として推奨2つ目の要素としてだけ働き、パスワードと組み合わせて使う
GitHub Mobileできない(TOTPかSMSの後)パスキー等がないときの予備アプリへのプッシュ通知で承認する

TOTP(時間ベースのワンタイムパスワード)は、アプリが30秒ごとに6桁の数字を作る方式です。GitHubはアプリを指定していないので、Google Authenticator、Microsoft Authenticator、1Passwordなど、どれを使っても構いません。

パスキーとセキュリティキーが最初の方法にできないのは、GitHub Docsによると、なくしやすく、端末をまたいだ同期に対応する範囲がまだ十分でないためです。そのため、まず認証アプリで2FAを有効にし、その後でパスキーを足す順番になります。

主な方法:認証アプリ

スマホのTOTPアプリ。クラウドへのバックアップをオンにしておく

予備:パスキーかセキュリティキー

パソコンのパスキーや物理キー。スマホをなくしても入れる

最後の手段:リカバリーコード

16個のコード。スマホ以外の場所(パスワードマネージャーなど)に保存

当サイトがすすめる構成。主な方法・予備の方法・リカバリーコードを、別々の場所に置く。

設定の手順(認証アプリで始める)

1

認証アプリをスマホに入れる

スマホかパソコンにTOTPアプリを入れます。GitHub Docsは、クラウドに認証コードをバックアップできるアプリを勧めています。機種変更や紛失のときに、別の端末で同じコードを出せるようになるためです。

2

「Password and authentication」を開く

GitHubの画面右上のプロフィール写真をクリックし、「Settings」を選びます。サイドバーの「Access」にある「Password and authentication」をクリックします。

3

2FAを有効にしてQRコードを読み取る

「Two-factor authentication」の欄で「Enable two-factor authentication」を選びます。表示されたQRコードを認証アプリで読み取り、アプリに出た6桁のコードを「Verify the code from the app」の欄に入力します。

QRコードが読めないときは「setup key」をクリックすると、アプリに手入力するための文字列が表示されます。

4

リカバリーコードを保存して完了する

「Save your recovery codes」で「Download」をクリックし、リカバリーコードを保存します。保存したら「I have saved my recovery codes」をクリックすると、2FAが有効になります。保存先は次の節を参照してください。

5

パスキーを2つ目の方法として追加する

同じ「Password and authentication」の「Passkeys」で「Add a passkey」をクリックし、パスワードなどで確認した後、画面の指示に従って登録します。Windows Hello、Face ID、Touch IDなどの端末の認証機能もパスキーとして登録できます。

物理的なセキュリティキーを使う場合は、「Security keys」の横の「Add」から「Register new security key」を選びます。GitHub Mobileを使う場合は、アプリでサインインしてプッシュ通知を許可すれば、2FAに使えるようになります。

6

28日以内に一度2FAでサインインする

2FAを設定すると、アカウントは28日間の確認期間(チェックアップ)に入ります。期間中に2FAでのサインインに成功すれば終わります。成功しないまま28日目になると、2FAの実行を求められ、通らない場合は設定をやり直す必要があります。

リカバリーコードの保管

リカバリーコードは、2FAの方法がすべて使えなくなったときに、自分でアカウントに入るための1回限りのコードです。16個あり、1つ使うとそのコードは二度と使えません。

保存してよい場所

  • パスワードマネージャー(GitHub Docsが推奨)
  • 印刷して、自宅の決まった場所に保管する
  • 暗号化した外部ストレージ

避けたい場所

  • 認証アプリと同じスマホだけ(スマホをなくすと両方失う)
  • ダウンロードフォルダに置いたまま(既定のファイル名は github-recovery-codes.txt)
  • チャットやメールで人に送る

あとから確認したいときは、「Password and authentication」の「Recovery codes」の横にある「View」から、「Download」「Print」「Copy」で取り出せます。新しいコードを作る(「Generate new recovery codes」)と、それまでのコードはすべて無効になるので、保存し直してください。

GitHub Docsは、リカバリーコードのほかに、SSH鍵やpersonal access tokenも復旧手段として使えるとしています。また、ブラウザのCookieを毎日消す設定にしていると、復旧で使う「以前使ったデバイス」の記録(_device_id というCookie)が残らないため、GitHub.comのCookieは残しておくことが勧められています。

スマホをなくした・機種変更したとき

使える手段によって、すぐ戻れるか、審査を待つかが変わります。上から順に試してください。

手元に残っているもの方法かかる時間
リカバリーコードサインイン画面の「More options」→「2FA recovery code」で入力すぐ
パスキーかセキュリティキーそのまま使ってサインインすぐ
認証アプリのバックアップ新しい端末でアプリを復元し、コードを出すすぐ
パスワードと、以前使ったデバイス・SSH鍵・personal access tokenのどれか「More options」→「Begin account or email recovery」で申請GitHubサポートの審査で最大3営業日
どれもない復旧できない。メールアドレスの登録を外して新しいアカウントで使う―
1

リカバリーコードかパスキーで入れるか試す

https://github.com/login でユーザー名とパスワードを入力し、2FAを求められたら「More options」を開きます。「2FA recovery code」を選んでリカバリーコードを1つ入力するか、パスキーを使います。入れたら、すぐに新しいスマホで2FAの方法を設定し直してください。

2

どれもなければ、アカウント復旧を申請する

「More options」の「Begin account or email recovery」をクリックし、登録メールアドレスに届くワンタイムパスワードを入力します。続けて、本人確認に使う要素として「Verify with this device」(以前このアカウントで使った端末)、SSH鍵、personal access tokenのどれかを選びます。

GitHubサポートが審査し、3営業日以内にメールで返事が来ます。待っている間に追加で申請しても審査されません。待機期間中にリカバリーコードなどが見つかれば、いつでもそれで入れます。

GitHubサポートでも戻せない状態がある

GitHub Docsは、2FAの資格情報と復旧手段をすべて失った場合、セキュリティ上の理由からGitHubサポートでもアクセスを戻せないと明記しています。SSH鍵も、しばらく使われていないとアカウントから外されるため、復旧に使えないことがあります。

そうなると、できるのはロックされたアカウントからメールアドレスの登録を外し、新しいアカウントか既存の別アカウントで使うことだけです。予備の方法とリカバリーコードは、設定したその日に用意してください。

SMSから認証アプリに切り替える

すでにSMSで2FAを設定している場合も、2FAを無効にせずに方法を足したり切り替えたりできます。2FAを無効にしないので、リカバリーコードも、2FAが必須の組織のメンバー資格もそのまま残ります。

1

認証アプリを追加する

「Password and authentication」の「Two-factor methods」で、認証アプリ(TOTP)の行にある「Add」をクリックします。QRコードを読み取り、6桁のコードを入力して「Save」をクリックします。

2

優先する方法を認証アプリにする

「Two-factor authentication」の「Preferred 2FA method」のドロップダウンで、認証アプリを選びます。サインイン時に最初に表示される方法が認証アプリになります。

3

不要ならSMSを外す

「Two-factor methods」の一覧で、SMSの横のメニューから外します。GitHub Docsは、組織がSMSなどの安全でない方法を禁止したときには、安全な方法を設定したうえでSMSを外すよう案内しています。外す前に、認証アプリでサインインできることを一度確かめてください。

組織によってはSMSの2FAだと入れない

組織(Organization)のオーナーは、「安全な2FAの方法だけを許可する」設定ができます。GitHub Docsが挙げる安全な方法は、パスキー、セキュリティキー、認証アプリ、GitHub Mobileです。この設定の組織では、SMSが1つでも登録されているメンバーは組織のリソースにアクセスできません。

あわせて見直す設定

2FAはサインインを守るものです。一方で、すでに発行したトークンや鍵、承認したアプリは、2FAとは別にアカウントへのアクセス手段として残ります。2FAを設定した日に、次の項目もまとめて確認すると効率的です。

GitHubのアカウントで見直す項目
パスキーを追加
「Password and authentication」の「Passkeys」→「Add a passkey」。2FAの予備になり、パスワード入力も省ける
期限付きのトークンに替える
「Settings」→「Developer settings」→「Personal access tokens」→「Fine-grained tokens」→「Generate new token」。「Expiration」で有効期限を選び、対象のリポジトリを絞る
承認済みのアプリを棚卸し
「Settings」→「Applications」の「Authorized OAuth Apps」と「Authorized GitHub Apps」タブ。覚えのないもの、使っていないものは「Revoke」
SSH鍵の一覧を確認
「Settings」→「SSH and GPG keys」。覚えのない鍵、古い鍵は「Delete」
自分のプッシュ保護
「Settings」→「Code security」の「Push protection for yourself」。公開リポジトリへのシークレットのpushを止める(公開リポジトリでは既定でオン)
Dependabotアラート
「Settings」→「Code security」の「Dependabot alerts」で「Enable all」。新しいリポジトリでも自動で有効にできる
セキュリティログ
「Settings」→「Security log」。過去90日の操作を確認できる

トークンは classic より fine-grained を使う

personal access token(PAT:パスワードの代わりにAPIやgitの操作に使う文字列)には、classic と fine-grained の2種類があります。GitHubは、使える場面では fine-grained を使うよう勧めています。classic のトークンは、アクセスできる組織のすべてのリポジトリと、自分のすべての個人リポジトリに届いてしまうためです。

GitHubは1年間使われていないトークンを自動で削除しますが、有効期限を設定することを強く勧めています。コマンドラインからGitHubを使うだけなら、トークンを作らずにGitHub CLIやGit Credential Managerを使う方法もあります。漏れたトークンを消しても失効させないと使われ続ける問題は GitHubに公開された認証情報が今も有効な理由 で詳しく扱っています。

シークレットスキャンとプッシュ保護が使える範囲

シークレットスキャン(コードに含まれたAPIキーなどを自動で見つける機能)は、公開リポジトリでは無料で自動的に動きます。リポジトリ単位のプッシュ保護は、リポジトリの「Settings」→「Advanced Security」で「Secret Protection」と「Push protection」を有効にします。

組織が所有するプライベートリポジトリでは、有料の GitHub Secret Protection が必要です。個人アカウントのプライベートリポジトリは、通常のプランでは対象外です。この部分は、手元でコミット前に止める gitleaks で補えます。

組織のオーナーなら:メンバーに2FAを必須にする

組織の「Settings」→「Authentication security」で、「Require two-factor authentication for everyone in your organization」を選んで「Save」します。GitHub Free と GitHub Team のプランでも使えます。さらに「Only allow secure two-factor methods」を選ぶと、SMSを使うメンバーを締め出せます。

有効にすると、2FAを使っていないメンバーは組織のリソースにアクセスできなくなり、外部コラボレーターは組織から外されます。ボットやサービスアカウントも対象なので、事前にメンバーへ知らせ、2FAの状況を「People」ページで確認してから切り替えてください。

チェックリスト

やること場所目安
認証アプリで2FAを有効にするSettings → Password and authentication5分
リカバリーコードをパスワードマネージャーに保存同上の「Recovery codes」→「View」2分
パスキーかセキュリティキーを追加同上の「Passkeys」「Security keys」3分
28日以内に一度2FAでサインインする――
classic トークンを期限付きの fine-grained に置き換えるSettings → Developer settingsトークン1本につき5分
承認済みアプリとSSH鍵を棚卸しするSettings → Applications / SSH and GPG keys5分
プッシュ保護とDependabotアラートを確認Settings → Code security2分
組織のオーナーなら2FAを必須にする組織の Settings → Authentication security周知の期間を含めて数日

出典(公開情報)

本記事の手順・期間・仕様は、2026年10月6日にGitHub Docsなどの公式情報で確認しました。GitHubの画面や条件は変わることがあるため、操作の前に出典のページも確認してください。

次に読む

よくある質問

QGitHubの2段階認証はどこから設定しますか?
A

画面右上のプロフィール写真から「Settings」を開き、サイドバーの「Access」にある「Password and authentication」を選びます。「Two-factor authentication」(GitHub Docs日本語版の表記は「2 要素認証」)の「Enable two-factor authentication」から、認証アプリ(TOTP)かSMSで設定を始めます。パスキー・セキュリティキー・GitHub Mobileは、TOTPかSMSを設定した後で追加できます。

QGitHubの2段階認証は必須ですか?
A

GitHubは2023年3月から、GitHub.comでコードを投稿するユーザーを対象に、グループごとに2FAを必須化しています。リリースの作成、アプリやActionの公開、パッケージを公開しているリポジトリの管理者・共同作成者、組織のオーナーなどが対象になります。対象に選ばれると通知メールが届き、45日の登録期間と7日の猶予を過ぎると、2FAを有効にするまでGitHub.comにアクセスできなくなります。通知が来ていない人も、有効にすることが強く推奨されています。

QGitHubの2段階認証にSMSは使えますか?日本でも届きますか?
A

使えます。日本はGitHubがSMS認証をサポートしている国の一覧に入っています(2026年10月確認)。ただしGitHub Docsは、SMSは傍受されやすくフィッシングにも弱いとして、認証アプリ(TOTP)を使うよう強く勧めています。組織によってはSMSだけの2FAを禁止している場合もあります。

Qスマホを機種変更・紛失して、GitHubの認証コードが出せません。
A

まずリカバリーコード(既定のファイル名は github-recovery-codes.txt)を探し、サインイン画面の「More options」→「2FA recovery code」で入力します。パスキーやセキュリティキーを登録していればそれでも入れます。どれもない場合は「Begin account or email recovery」から、メールのワンタイムパスワードと、以前使ったデバイス・SSH鍵・personal access tokenのどれかで本人確認を申請します。GitHubサポートが審査し、3営業日以内にメールで返事が来ます。

Qリカバリーコードもなくしたら、GitHubのサポートで戻してもらえますか?
A

戻せません。GitHub Docsは、2FAの資格情報と復旧手段をすべて失った場合、セキュリティ上の理由からGitHubサポートでもアクセスを戻せないとしています。その場合アカウントは失われ、できるのはアカウントに結び付いたメールアドレスの登録を外して、新しいアカウントで使うことです。

QSMSから認証アプリに切り替えるには?
A

「Password and authentication」の「Two-factor methods」で、認証アプリ(TOTP)の行にある「Add」から追加し、表示されたQRコードを読み取って6桁のコードを入れ「Save」します。続けて「Preferred 2FA method」で認証アプリを優先にし、不要ならSMSを一覧から外します。2FAを無効にせずに切り替えられるので、リカバリーコードはそのまま使えます。