2026年5月20日
2026年5月20日
WordPressの二段階認証を設定する方法|Two Factorプラグインの手順と紛失時の解除
二段階認証(2FA)を設定すると、ログインのときにパスワードに加えて、スマートフォンの認証アプリに表示される6桁のコードなどが必要になります。パスワードが漏れたり推測されたりしても、それだけではログインできなくなります。WordPress 本体には二段階認証の機能がないため、プラグインで追加します。
この記事では、無料の Two Factor プラグインを使った設定を中心に説明します。内容は2026年11月時点(Two Factor 0.17.0、WP 2FA 4.3.0)で確認したものです。
Two Factor プラグインとは
Two Factor は wordpress.org で配布されている無料プラグインで、WordPress のコア開発に関わる人たちが GitHub の WordPress 組織(WordPress/two-factor)で開発しています。WordPress 本体に組み込まれた機能ではありませんが、余計な機能がなく、設定も各ユーザーのプロフィール画面で完結します。
使える認証方法は次のとおりです。
| 方法 | 内容 |
|---|---|
| Authenticator App(TOTP) | Google Authenticator、Authy、1Password などの認証アプリに表示される6桁のコード。30秒ごとに変わる |
| Email Codes | ログインのたびに、ユーザーのメールアドレスへコードを送る |
| Backup Codes | 1回だけ使える予備のコード(10個)。スマートフォンを失ったときに使う |
| Dummy Method | テスト用。WP_DEBUG が有効なときだけ表示される |
以前あった FIDO U2F(セキュリティキー)は、ブラウザーの対応終了に伴い削除されました。パスキーやセキュリティキーを使いたい場合は、Two Factor に方法を追加する別プラグイン「Two-Factor Provider: WebAuthn」があります。
Two Factor をインストールする
管理画面の「プラグイン」→「新規プラグインを追加」で「Two Factor」を検索し、インストールして有効化します。WP-CLI では次のとおりです。
wp plugin install two-factor --activate
管理者は「設定」→「Two-Factor」で、サイトで使わせる認証方法を選べます(初期状態ではすべて有効)。メールが届きにくいサーバーでは Email Codes を外しておく、といった使い方ができます。
認証アプリ(TOTP)を設定する
設定は、ユーザーが自分のプロフィール画面で行います。
- 管理画面の「ユーザー」→「プロフィール」を開く
- 下のほうにある「Two-Factor Options」の欄まで進む(言語設定によっては日本語の見出しで表示されます)
- 「Authenticator App」を有効にし、表示された QR コードを認証アプリで読み取る(読み取れない場合は表示された鍵を手で入力する)
- 認証アプリに表示された6桁のコードを入力して確認する
- 「Backup Codes」で予備のコードを作り、印刷するかパスワード管理ソフトなど安全な場所に保管する
- ふだん使う方法(primary)を選び、「プロフィールを更新」を押す
次回から、パスワードを入力したあとに認証コードを求められます。
管理者は、ほかのユーザーの編集画面(「ユーザー」→「ユーザー一覧」→ 対象ユーザーの「編集」)でも同じ欄を操作できます。
認証コードが合わないとき
TOTP は「共有の秘密鍵」と「現在時刻」からコードを計算する仕組みです(RFC 6238)。サーバーとスマートフォンの時刻が大きくずれていると、正しいコードを入れても通りません。Two Factor は前後数ステップ(1ステップ30秒)のずれまでは許容しますが、それを超える場合はサーバー側の時刻同期(timedatectl で NTP が有効か)を確認してください。スマートフォン側も時刻の自動設定を有効にしておきます。
役割ごとに二段階認証を必須にしたい場合
Two Factor には、特定の役割(管理者など)に二段階認証の設定を強制する機能がありません。プラグインの FAQ でも、強制は今後の検討課題とされています。以前この記事で紹介していた two_factor_user_roles というフィルターは存在しません。
管理者や編集者に二段階認証を必須にしたい場合は、強制の機能を持つプラグインを使います。たとえば WP 2FA(Melapress 社)の無料版では、次のことができます。
- すべてのユーザー、または特定の役割のユーザーに二段階認証を必須にする
- 猶予期間を設けて、その間に各ユーザーに設定させる(猶予なしで即時に求めることもできる)
- 認証アプリ(TOTP)、メールのコード、バックアップコードを使う
- 有効化後の初期設定ウィザードで方針を決める
wp plugin install wp-2fa --activate
Two Factor と WP 2FA を同時に有効にすると、ログインの流れが二重になります。どちらか一方を使ってください。
WP-CLI で二段階認証を管理する
Two Factor 0.17.0 から、WP-CLI の wp two-factor コマンドが付きました。ユーザーは ID・ログイン名・メールアドレスのどれでも指定できます。
# ユーザーの二段階認証の状態を確認
wp two-factor status admin
# 使える認証方法の一覧
wp two-factor list-providers
# バックアップコードを作り直す(既存のコードは無効になる。初期値は10個)
wp two-factor backup-codes generate admin
# 認証の失敗が続いて待たされている状態だけを解除する(設定は変えない)
wp two-factor unlock admin
バックアップコードはハッシュ化して保存されるため、作ったあとにデータベースから読み出すことはできません。なくした場合は作り直します。
スマートフォンを紛失したときの解除方法
バックアップコードでログインする
ログイン画面で認証コードを求められたら、別の方法を選ぶリンクから「Backup Codes」を選び、保管しておいたコードを入力します。1つのコードは1回しか使えません。ログインしたら、プロフィール画面で認証アプリを設定し直し、バックアップコードも作り直します。
ほかの管理者に解除してもらう
ログインできる管理者がいれば、「ユーザー」→「ユーザー一覧」で対象ユーザーの「編集」を開き、「Two-Factor Options」の有効な方法のチェックをすべて外して「ユーザーを更新」を押します。これでパスワードだけでログインできるようになります。
WP-CLI で解除する
サーバーに SSH で入れる場合は、次のコマンドでそのユーザーの二段階認証をすべてリセットできます。
# 確認なしで、admin の二段階認証の設定をすべて解除
wp two-factor disable admin --yes
# 特定の方法だけを止める場合(方法名は list-providers で確認)
wp two-factor disable admin Two_Factor_Totp
管理画面にも SSH にも入れない場合
FTP やサーバーのファイルマネージャーで wp-content/plugins/two-factor のフォルダー名を一時的に変えると、プラグインが停止し、パスワードだけでログインできます。ログイン後にフォルダー名を戻し、プラグインを有効化して設定し直してください。プラグインを止めている間は、ほかのユーザーも二段階認証なしでログインできる状態になるため、作業は短時間で済ませます。
アプリケーションパスワードとの関係
WordPress 5.6 から、REST API や XML-RPC 用の専用パスワード「アプリケーションパスワード」を発行できます(「ユーザー」→「プロフィール」の「アプリケーションパスワード」欄)。HTTPS のサイト、またはローカル開発環境で使えます。
Two Factor で二段階認証を有効にしたユーザーは、REST API や XML-RPC には通常のパスワードで認証できず、アプリケーションパスワードだけが使えます(two_factor_user_api_login_enable フィルターの初期動作)。外部のアプリや連携サービスからログインしている場合は、アプリケーションパスワードを発行して差し替えてください。
# ユーザーのアプリケーションパスワードの一覧
wp user application-password list admin
# 新しく発行する(パスワードは発行時に一度だけ表示される)
wp user application-password create admin "外部連携" --porcelain
アプリケーションパスワードについてはWordPressのアプリケーションパスワードの使い方も参考にしてください。
設定前に決めておくこと
- バックアップコードの保管場所(設定したその場で保存する)
- 認証アプリを入れたスマートフォンをなくしたときに、誰がどの方法で解除するか(管理者が1人だけのサイトでは、SSH や FTP で入れる手段を確保しておく)
- 二段階認証と合わせて、ログイン試行回数の制限も入れるか(WordPressのログイン試行回数を制限する方法)
まとめ
- Two Factor を入れ、各ユーザーが「プロフィール」で認証アプリとバックアップコードを設定します。
- 役割ごとの強制は Two Factor にはないため、必要なら WP 2FA などの強制機能を持つプラグインを使います。
- 紛失時は、バックアップコード、ほかの管理者による解除、
wp two-factor disable、プラグインのフォルダー名変更の順に試します。