【ShinのAI活動ログ】「二段階認証コードが届かない!」自分のWordPressから締め出された夜の全記録

ある夜、いつものようにサイトの管理画面にログインしようとしたら――二段階認証のコードが、いつまで経っても届かない。

本記事は、自分のWordPressから完全に締め出された筆者が、緊急脱出して原因を特定し、二度と同じ事故が起きない構成に作り替えるまでの実録です。結論から言うと、犯人はGoogle Cloudの「テスト中」OAuthアプリに課せられた7日ルールでした。日本語の情報が少ないポイントなので、同じ症状で困っている方の助けになれば幸いです。

Shinさん、大変です!ログインしようとしたら、二段階認証のメールが……来ません!何回「再送信」を押しても来ません!!
落ち着いて。まず迷惑メールフォルダ。……ないですね。ということは、コードが「届かない」んじゃなくて、そもそも「送信されていない」可能性が高いです。
えっ、でも先週までは普通に届いてましたよ?何も設定を変えてないのに……
「何も変えてないのに壊れた」ときは、大抵「時間経過で切れる何か」が切れています。このサイトはメール送信をGmail連携(OAuth)にしてあるので、そのトークンが怪しい。……ただ、確認しようにも管理画面に入れないのが問題ですね。
二段階認証のコードがメールで来る設定なのに、そのメールが死んでるって……これ、完全に詰みでは!?
なんとでもするさ。

目次

1. 緊急脱出:ファイルマネージャーからプラグインを一時停止

二段階認証で締め出された場合でも、サーバーのファイルに触れるなら脱出路があります。WordPressのプラグインは、フォルダ名を変えるだけで強制的に無効化できるためです。

  1. レンタルサーバーのファイルマネージャー(またはFTP)で wp-content/plugins/ を開く
  2. 二段階認証を提供しているプラグインのフォルダをリネームする(例:末尾に _off を付ける)
  3. ログイン画面にアクセスすると、二段階認証なしでID+パスワードのみでログインできる
  4. ログイン後、フォルダ名をすぐ元に戻し、管理画面からプラグインを再有効化する
フォルダの名前を変えるだけで無効化できちゃうんですか!?
WordPressは起動時にプラグインのファイルパスを確認して、見つからなければそのプラグインを黙って無効化します。この仕様が緊急脱出ハッチになるわけです。
やってみます!……あれ?ログインしたはずなのに、またログイン画面に戻されました。エラーも出てないのに無限ループです……
アドレスバーのURLをよく見てください。ログインページは「wwwなし」なのに、リダイレクト先が「wwwあり」になっていませんか。
……なってます!redirect_to=https://www.〜って書いてあります!
それが原因です。wwwなしドメインで発行されたCookieは、wwwありの管理画面では別サイト扱いで弾かれます。普段はプラグインがURLを統一してくれていたのが、さっき無効化した影響で素の状態が露出したんですね。wwwあり側のログインURLに直接アクセスし直して、このサイトのCookieを一度削除すれば通ります。

【ポイント】プラグイン無効化後にログインループ(URL末尾に reauth=1 が付く)が起きたら、www有無の不一致を疑ってください。Cookie削除+正しい側のURLでログインし直せば解決します。


2. 犯人特定:Google OAuthの「7日ルール」

無事に管理画面へ入ると、ダッシュボードに答えが表示されていました。

WP Mail SMTP: One or more emails recently failed to send.
― Your Gmail OAuth refresh token has expired.

メール送信プラグインが使っていたGmailのOAuthリフレッシュトークンが失効し、サイトからのメール送信がすべて止まっていたのです。二段階認証コードも、その巻き添えで送信されていませんでした。

「リフレッシュトークンの期限が切れました」……って、トークンって勝手に切れるものなんですか?
ここが今回の核心です。Gmail連携を「自分でGoogle Cloudプロジェクトを作る方式」で設定した場合、そのアプリのOAuth同意画面には「公開ステータス」があります。これが「テスト中(Testing)」のままだと、リフレッシュトークンは7日で強制失効するんです。Googleの仕様です。
7日!?じゃあ設定した1週間後には必ず壊れるってことじゃないですか!罠すぎます!
対処は簡単で、Google Cloud Consoleで「アプリを公開」を押して本番ステータスにするだけです。自分専用の送信アプリなら審査申請は不要。再認可のときに「このアプリはGoogleで確認されていません」という警告が出ますが、自分で作ったアプリに自分がアクセスしているだけなので、「詳細」から進めて問題ありません。

手順をまとめると以下の通りです。

  1. Google Cloud Console → 対象プロジェクト → OAuth同意画面(新UIでは「Google Auth Platform」→「対象」)
  2. 公開ステータスを「テスト中」→「本番」へ変更
  3. WP Mail SMTP側で「OAuth接続を削除」→ 再認可(※本番化したに取得したトークンだけが恒久になります。順番が重要)
  4. メールテストで送信を確認

3. 恒久対策:メール依存の二段階認証をやめる

これで一件落着ですね!メールも直ったし、二段階認証も元通り!
いや、元通りにしたら意味がないんです。今回の根本的な問題は「二段階認証コードをメールに依存していた」こと。メール送信経路――OAuthトークン、Gmail、SMTP設定――のどれか一つでも死ねば、即締め出されます。いわゆる単一障害点です。
じゃあ、どうすれば……
TOTP、つまり認証アプリ方式に切り替えます。Google AuthenticatorやAegisのようなアプリが、スマホの中で6桁コードを生成する方式です。ネットワークもメールサーバーも一切経由しないので、サイト側で何が壊れてもコードは手元で生成され続けます。
なるほど……!あと、今回そもそもバックアップコードを保存していれば、こんな大騒ぎにならなかったのでは?
……その通りです。耳が痛い。

最終的な構成は以下の通りにしました。

  • メイン:認証アプリ(TOTP)による二段階認証
  • 予備:リカバリーコードを発行し、パスワードマネージャーに保存(紙のバックアップも推奨)
  • メール方式の二段階認証は無効化

なお、二段階認証の設定を変更しようとすると「セッションを再検証する必要があります」と表示されて操作がロックされることがあります。これは二段階認証設定が機密操作扱いのため、直近で認証したセッションでしか触れないという仕様です。「今すぐ再検証」から再認証すれば解除されます。バグではありません。

また、新しい認証方式を設定したら、今のセッションを開いたまま、別のシークレットウィンドウでログインテストをしてから作業を終えるのが鉄則です。設定ミスがあっても締め出されずに済みます。


4. おまけ:Googleアカウント自体にもMFA義務化の波

そういえば、Google Cloud Consoleに「2段階認証プロセスを有効にしてください」って期限付きの警告が出てました。
Google Cloudユーザーへの多要素認証の義務化ですね。WordPressで使ったのと同じ認証アプリにGoogleアカウントも登録して、バックアップコードも同じ場所に保管しておけばいい。今回の教訓はそのまま使い回せます。

5. まとめ:今日の教訓チェックリスト

今回の事故は、「テスト中OAuthアプリの7日失効」×「メール依存の二段階認証」×「バックアップコード未保存」という三重奏でした。同じ構成に心当たりのある方は、平和なうちに以下を確認してください。

  • ☑ Gmail連携のメール送信を自作Google Cloudプロジェクトで設定している場合、OAuth同意画面が「本番」ステータスか(テスト中なら7日で必ず壊れる)
  • ☑ 二段階認証はメール方式ではなくTOTP(認証アプリ)方式か
  • リカバリーコードを発行して保存してあるか(パスワードマネージャー+紙)
  • ☑ 万一の脱出路として、サーバーのファイルマネージャー/FTPでプラグインフォルダをリネームできることを覚えておく
  • ☑ ログインページ変更系プラグインを使っている場合、変更後のURLを控えてあるか
  • ☑ Googleアカウント自体の2段階認証も有効にしてあるか
それにしてもShinさん、締め出された瞬間は本当に焦りました……
セキュリティ対策は「攻撃者を締め出す」のと「自分を締め出す」のが紙一重ですからね。だからこそ、脱出路とバックアップは平和なうちに用意しておく。それさえあれば――なんとでもするさ。

【本記事の参照ソース】
・Google. OAuth 2.0のトークン有効期限に関する公式ドキュメント(テスト中アプリのリフレッシュトークン7日失効).
・WP Mail SMTP. Gmailメーラー設定に関する公式ドキュメント.
・WordPress. プラグインの読み込み仕様およびログインCookieの挙動に関する開発者向けドキュメント.

※本記事の内容は執筆時点(2026年7月)の各サービスの仕様に基づきます。Google Cloud ConsoleのUIや各プラグインの機能は変更される可能性があるため、最新の情報は各公式サイトでご確認ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

IT・セキュリティ・財務の資格を持つオールドミドル。
器用貧乏、週末は大抵疲れ気味。
漫画・アニメをこよなく愛し、週末は900ccバイクで風を切る。
おまけで大の戦国ファン
【プロフィール】
資格:IT・セキュリティ国家資格 / 財務資格保持者
趣味:バイク(900cc)/ 漫画・アニメ / 動画制作
性格:器用貧乏・熱中しては疲れる
口癖:「なんとでもするさ」

コメント

コメントする

CAPTCHA


目次