Hello everyone,
I have mistake that i delete Google Authentication Discourse on Mobile so Now i can’t login to Discourse.
My question is … Can we disable Two Factor Authentication by command line SSH ?
Thank you!
What happened to your backup codes?
Yes, you can do this by updating the enforce_second_factor site setting to “no”. Enter the rails console and run:
SiteSetting.enforce_second_factor = "no"
The available options for that setting are “no”, “staff”, and “all”.
私は初心者で、同じ問題に直面しています。バックアップコードを保存せずに、スマホ上の二段階認証を削除してしまいました。
現在、管理者画面にログインできません。ダッシュボードからこれを無効化できる他のスタッフもいません。
このコマンドの使い方を詳しく教えていただけますか?:
ありがとうございます
Discourse が動作しているサーバーに SSH ターミナルアクセスが必要です。お持ちですか?
はい、アクセス権はありますが、そのコマンドの使い方がわかりません。Rails コンソールに行く必要があるのでしょうか?実は、Rails の仕組み自体をあまり理解していません。
Rails コンソールにアクセスするには、サーバーに SSH で接続します。そのためには、コンピューターのターミナルを開いて以下を実行してください。
ssh root@<your_forum_ip_address>
<your_forum_ip_address> を、Discourse サイトの IP アドレスに置き換えてください。
コマンドが正常に実行されると、以下のようなプロンプトが表示されます。IP アドレス、または droplet 名が testeleven の代わりに表示されます。
root@testeleven:~#
cd /var/discourse と入力して Enter キーを押してください。
次に ./launcher enter app と入力して Enter キーを押してください。
/var/www/discourse# のようなプロンプトが表示されるはずです。
そのプロンプトで rails c と入力して Enter キーを押してください。pry(main)> のようなプロンプトが表示されれば、それが Rails コンソールです。
強制二段階認証を無効化するには、SiteSetting.enforce_second_factor="no" と入力して Enter キーを押してください。
SSH セッションを終了するには、ターミナルで exit と 3 回入力する必要があります。1 回目は Rails コンソールを終了するため、2 回目は Docker コンテナを終了するため、3 回目は SSH セッションを終了するためです。
ありがとうございます。手順は非常に明確で詳細でした。以下のように実行しましたが、ログイン時にまだ二段階認証が求められます。どこが間違っているのか分かりません。
root@hoi-dap:/var/discourse# ./launcher enter app
root@hoi-dap-app:/var/www/discourse# rails c
[1] pry(main)> SiteSetting.enforce_second_factor='no'
=> "no"
[2] pry(main)> exit
root@hoi-dap-app:/var/www/discourse# exit
logout
申し訳ありませんが、SiteSetting.enforce_second_factor = "no" を設定しても問題は解決しません。ユーザーの二段階認証レコードを削除する必要があります。
そのためには、Rails コンソールに入ってから、ユーザー ID を探す必要があります。以下のコマンドを実行してください。
id = User.find_by(username: '<your_username>').id
<your_username> をあなたの Discourse ユーザー名に置き換えてください。引用符はそのまま残してください。コマンドを実行すると、数字が返されます。その数字があなたのユーザー ID です。これは変数 id に代入されています。
次に、あなたのユーザーに関連する UserSecondFactor レコードを見つける必要があります。このコマンドは、最初のコマンドで設定した id 変数を使用します。
second_factor = UserSecondFactor.find_by(user_id: id)
このコマンドを実行すると、コンソールに二段階認証レコードを示す出力が表示されます。
次に、そのレコードを削除します。
second_factor.destroy
このコマンドを実行した後、コンソールを終了できます。実行後、サイトへのログインが可能になるはずです。
もし問題があれば、お知らせください。
とてもありがとうございます。うまく動作しました。
ただし、second_factor.destroy コマンドは使用しませんでした。代わりに、data フィールドを使用して Authenticator を手動で入力し、二要素認証コードを再作成しました。
はい、完全に動作しました。セキュリティを強化するために、新しいバリデーターを再作成します。
ありがとうございました。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.


