Nextcloud 唯一の管理者アカウントが2要素認証でログインできなくなったときの対処方法


先日の記事で、Nextcloud のユーザーが Google Authenticator による2要素認証ができなくなった際の対応方法について記事にしました。

「おー、助かる! ちょうど依頼が来てたところだし、やってみるさ!」
「あれ、管理者ユーザーの Google Authenticator ってだれが設定したの? 誰も知らないってか。」
「ま、いいや。このユーザーのバックアップコードは? え、誰も知らない?」

ちーーーーん..... orz

このようなことが起きた場合に対応方法についてまとめました。

対応手順をざっくりまとめ

  1. Two-Factor Admin Support アプリをインストール。
  2. occ twofactorauth:admin:generate-code コマンドで管理者ユーザーのワンタイムパスワードを生成。これを利用してログイン。

もう少し詳しく

  1. Nextcloud サーバーに SSH 接続。
  2. 2要素認証できなくなった時のワンタイムパスワードを生成するためのTwo-Factor Admin Supportをインストール、有効化。

    WebサーバーがNginxの場合
    cd 【Nextcloud インストールディレクトリ】
    sudo -u nginx php ./occ app:install twofactor_backupcodes
    
  3. occ twofactorauth:admin:generate-code コマンドで管理者ユーザーのワンタイムパスワードを生成。"Generated new one-time code for 【管理者ユーザー名】:" で表示されるワンタイムパスワードを確認。

    WebサーバーがNginxの場合
    sudo -u nginx php ./occ twofactorauth:admin:generate-code 【管理者ユーザー名】
    
  4. 管理者ユーザーでログイン。

  5. "Admin code" をクリック。

  6. "Authentication Code" の入力欄に 3. のワンタイムパスワードを入力し "Submit" をクリック。

おまけ

なんとなく想像つくかと思いますが、twofactorauth:admin:generate-code は管理者ユーザーだけではなく Nextcloud の全てのユーザーで使えます。なので、先日の記事 の対策にも使うことができます。