Отключение двухфакторной аутентификации через командную строку

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!

Что случилось с вашими кодами резервного копирования?

Я удалил свою Google-аутентификацию

И я не сохранил резервный код.

Да, вы можете сделать это, изменив параметр сайта enforce_second_factor на “no”. Запустите консоль Rails и выполните:

SiteSetting.enforce_second_factor = "no"

Доступные значения для этого параметра: “no”, “staff” и “all”.

Я хочу отключить двухфакторную аутентификацию для всей учетной записи Discourse

Я новичок и столкнулся с той же проблемой. Я удалил двухфакторную аутентификацию на телефоне, не сохранив резервный код.
В настоящее время я не могу войти в панель администратора. У меня сейчас нет других сотрудников, чтобы отключить это через панель управления.
Может ли кто-нибудь подробнее объяснить, как использовать эту команду?:

Спасибо

Для продолжения вам нужен доступ к терминалу SSH на сервере, на котором запущен Discourse. Есть ли у вас такой доступ?

Да, он у меня есть, но я не знаю, как выполнить эту команду. Нужно ли зайти в консоль Rails? На самом деле я не знаю, как работает Rails.

Чтобы получить доступ к консоли Rails, подключитесь к вашему серверу по SSH. Для этого откройте терминал на вашем компьютере и выполните команду:

ssh root@<ваш_ip_адрес_форума>

Замените <ваш_ip_адрес_форума> на IP-адрес вашего сайта Discourse.

Если команда выполнится успешно, вы увидите приглашение, похожее на это. Вместо слова testeleven будет отображаться ваш IP-адрес или имя droplet:

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 в терминале. Первый раз — чтобы выйти из консоли Rails, второй раз — чтобы выйти из контейнера Docker, третий раз — чтобы завершить сессию 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: '<ваш_логин>').id

Замените <ваш_логин> на ваш логин в Discourse. Не забудьте оставить кавычки. После выполнения команды вы увидите возвращённое число. Это ваш ID пользователя. Он был присвоен переменной id.

Затем вам нужно найти запись UserSecondFactor, связанную с вашим пользователем. Эта команда использует переменную id, которую вы установили первой командой:

second_factor = UserSecondFactor.find_by(user_id: id)

После выполнения этой команды в консоли должен появиться вывод, показывающий вашу запись второго фактора.

Теперь удалите эту запись:

second_factor.destroy

После выполнения этой команды вы можете выйти из консоли. После этого вы должны иметь возможность войти на свой сайт.

Сообщите нам, если у вас возникнут какие-либо проблемы с этим.

Большое спасибо, всё работает отлично.
Однако я не использовал команду second_factor.destroy. Вместо этого я взял данные из поля и вручную ввёл их в Authenticator, чтобы воссоздать код двухфакторной аутентификации.
Да, это сработало идеально. Для повышения безопасности я воссоздам новый валидатор.
Спасибо.