対象:自分の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上にバナーが表示されます。通知を受け取っていない人は必須の対象ではありませんが、有効にすることが強く推奨されています。
猶予の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個のコード。スマホ以外の場所(パスワードマネージャーなど)に保存
設定の手順(認証アプリで始める)
認証アプリをスマホに入れる
スマホかパソコンにTOTPアプリを入れます。GitHub Docsは、クラウドに認証コードをバックアップできるアプリを勧めています。機種変更や紛失のときに、別の端末で同じコードを出せるようになるためです。
「Password and authentication」を開く
GitHubの画面右上のプロフィール写真をクリックし、「Settings」を選びます。サイドバーの「Access」にある「Password and authentication」をクリックします。
2FAを有効にしてQRコードを読み取る
「Two-factor authentication」の欄で「Enable two-factor authentication」を選びます。表示されたQRコードを認証アプリで読み取り、アプリに出た6桁のコードを「Verify the code from the app」の欄に入力します。
QRコードが読めないときは「setup key」をクリックすると、アプリに手入力するための文字列が表示されます。
リカバリーコードを保存して完了する
「Save your recovery codes」で「Download」をクリックし、リカバリーコードを保存します。保存したら「I have saved my recovery codes」をクリックすると、2FAが有効になります。保存先は次の節を参照してください。
パスキーを2つ目の方法として追加する
同じ「Password and authentication」の「Passkeys」で「Add a passkey」をクリックし、パスワードなどで確認した後、画面の指示に従って登録します。Windows Hello、Face ID、Touch IDなどの端末の認証機能もパスキーとして登録できます。
物理的なセキュリティキーを使う場合は、「Security keys」の横の「Add」から「Register new security key」を選びます。GitHub Mobileを使う場合は、アプリでサインインしてプッシュ通知を許可すれば、2FAに使えるようになります。
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営業日 |
| どれもない | 復旧できない。メールアドレスの登録を外して新しいアカウントで使う | ― |
リカバリーコードかパスキーで入れるか試す
https://github.com/login でユーザー名とパスワードを入力し、2FAを求められたら「More options」を開きます。「2FA recovery code」を選んでリカバリーコードを1つ入力するか、パスキーを使います。入れたら、すぐに新しいスマホで2FAの方法を設定し直してください。
どれもなければ、アカウント復旧を申請する
「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が必須の組織のメンバー資格もそのまま残ります。
認証アプリを追加する
「Password and authentication」の「Two-factor methods」で、認証アプリ(TOTP)の行にある「Add」をクリックします。QRコードを読み取り、6桁のコードを入力して「Save」をクリックします。
優先する方法を認証アプリにする
「Two-factor authentication」の「Preferred 2FA method」のドロップダウンで、認証アプリを選びます。サインイン時に最初に表示される方法が認証アプリになります。
不要ならSMSを外す
「Two-factor methods」の一覧で、SMSの横のメニューから外します。GitHub Docsは、組織がSMSなどの安全でない方法を禁止したときには、安全な方法を設定したうえでSMSを外すよう案内しています。外す前に、認証アプリでサインインできることを一度確かめてください。
組織によってはSMSの2FAだと入れない
組織(Organization)のオーナーは、「安全な2FAの方法だけを許可する」設定ができます。GitHub Docsが挙げる安全な方法は、パスキー、セキュリティキー、認証アプリ、GitHub Mobileです。この設定の組織では、SMSが1つでも登録されているメンバーは組織のリソースにアクセスできません。
あわせて見直す設定
2FAはサインインを守るものです。一方で、すでに発行したトークンや鍵、承認したアプリは、2FAとは別にアカウントへのアクセス手段として残ります。2FAを設定した日に、次の項目もまとめて確認すると効率的です。
- パスキーを追加
- 「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 authentication | 5分 |
| リカバリーコードをパスワードマネージャーに保存 | 同上の「Recovery codes」→「View」 | 2分 |
| パスキーかセキュリティキーを追加 | 同上の「Passkeys」「Security keys」 | 3分 |
| 28日以内に一度2FAでサインインする | ― | ― |
| classic トークンを期限付きの fine-grained に置き換える | Settings → Developer settings | トークン1本につき5分 |
| 承認済みアプリとSSH鍵を棚卸しする | Settings → Applications / SSH and GPG keys | 5分 |
| プッシュ保護とDependabotアラートを確認 | Settings → Code security | 2分 |
| 組織のオーナーなら2FAを必須にする | 組織の Settings → Authentication security | 周知の期間を含めて数日 |
出典(公開情報)
本記事の手順・期間・仕様は、2026年10月6日にGitHub Docsなどの公式情報で確認しました。GitHubの画面や条件は変わることがあるため、操作の前に出典のページも確認してください。
- 2FAの設定:GitHub Docs「2 要素認証を設定する」 / GitHub Docs「2 要素認証方法の変更」 / GitHub Docs「SMS 認証がサポートされている国」
- 必須化の対象と期間:GitHub Docs「必須の 2 要素認証について」 / GitHub Blog「Raising the bar for software security: next steps for GitHub.com 2FA」(2022年12月14日)
- 復旧:GitHub Docs「2 要素認証リカバリ方法を設定する」 / GitHub Docs「二要素認証クレデンシャルをなくした際のアカウント復旧」
- トークン:GitHub Docs「個人用アクセス トークンを管理する」
- アプリとSSH鍵:GitHub Docs「承認された OAuth アプリをレビューする」 / GitHub Docs「GitHub アプリの承認の確認と取り消し」 / GitHub Docs「SSH キーをレビューする」 / GitHub Docs「セキュリティ ログをレビューする」
- シークレットスキャンとDependabot:GitHub Docs「シークレット スキャンについて」 / GitHub Docs「ユーザーのプッシュ保護」 / GitHub Docs「リポジトリのプッシュ保護の有効化」 / GitHub Docs「Dependabot アラートの構成」
- 組織の2FA必須化:GitHub Docs「Organization で 2 要素認証を要求する」
次に読む
- 方式の選び方:二要素認証(MFA)の正しい選び方:SMSより強い「フィッシング耐性」とは / 用語:二要素認証(2FA)とは / パスキーとは
- トークンが漏れたとき:GitHubに公開された認証情報54万件が今も有効(2026年の調査)
- コミット前に止める:gitleaksでコミット前に秘密を止める
- 鍵の権限を絞る:SSH鍵の最小権限
- 置き場所の比較:自前のGitサーバーとGitHub、セキュリティ的にどっちが安全か
よくある質問
QGitHubの2段階認証はどこから設定しますか?
画面右上のプロフィール写真から「Settings」を開き、サイドバーの「Access」にある「Password and authentication」を選びます。「Two-factor authentication」(GitHub Docs日本語版の表記は「2 要素認証」)の「Enable two-factor authentication」から、認証アプリ(TOTP)かSMSで設定を始めます。パスキー・セキュリティキー・GitHub Mobileは、TOTPかSMSを設定した後で追加できます。
QGitHubの2段階認証は必須ですか?
GitHubは2023年3月から、GitHub.comでコードを投稿するユーザーを対象に、グループごとに2FAを必須化しています。リリースの作成、アプリやActionの公開、パッケージを公開しているリポジトリの管理者・共同作成者、組織のオーナーなどが対象になります。対象に選ばれると通知メールが届き、45日の登録期間と7日の猶予を過ぎると、2FAを有効にするまでGitHub.comにアクセスできなくなります。通知が来ていない人も、有効にすることが強く推奨されています。
QGitHubの2段階認証にSMSは使えますか?日本でも届きますか?
使えます。日本はGitHubがSMS認証をサポートしている国の一覧に入っています(2026年10月確認)。ただしGitHub Docsは、SMSは傍受されやすくフィッシングにも弱いとして、認証アプリ(TOTP)を使うよう強く勧めています。組織によってはSMSだけの2FAを禁止している場合もあります。
Qスマホを機種変更・紛失して、GitHubの認証コードが出せません。
まずリカバリーコード(既定のファイル名は github-recovery-codes.txt)を探し、サインイン画面の「More options」→「2FA recovery code」で入力します。パスキーやセキュリティキーを登録していればそれでも入れます。どれもない場合は「Begin account or email recovery」から、メールのワンタイムパスワードと、以前使ったデバイス・SSH鍵・personal access tokenのどれかで本人確認を申請します。GitHubサポートが審査し、3営業日以内にメールで返事が来ます。
Qリカバリーコードもなくしたら、GitHubのサポートで戻してもらえますか?
戻せません。GitHub Docsは、2FAの資格情報と復旧手段をすべて失った場合、セキュリティ上の理由からGitHubサポートでもアクセスを戻せないとしています。その場合アカウントは失われ、できるのはアカウントに結び付いたメールアドレスの登録を外して、新しいアカウントで使うことです。
QSMSから認証アプリに切り替えるには?
「Password and authentication」の「Two-factor methods」で、認証アプリ(TOTP)の行にある「Add」から追加し、表示されたQRコードを読み取って6桁のコードを入れ「Save」します。続けて「Preferred 2FA method」で認証アプリを優先にし、不要ならSMSを一覧から外します。2FAを無効にせずに切り替えられるので、リカバリーコードはそのまま使えます。