Command line disable Two Factor Authentication

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?

I delete my Google authentication

And i don’t save backup code

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”.

I want to disable two factor authentication all of account Discourse

저는 초보인데, 같은 문제를 겪고 있습니다. 백업 코드를 저장하지 않은 채로 휴대폰에서 Factor 인증을 삭제했습니다.
현재 관리자 계정에 로그인할 수 없으며, 다른 직원이 있어 대시보드에서 이 기능을 비활성화할 수도 없는 상태입니다.
아래 명령어를 어떻게 사용해야 하는지 더 자세히 설명해 주실 수 있을까요?

감사합니다

계속하려면 Discourse가 실행 중인 서버에 대한 SSH 터미널 접근 권한이 필요합니다. 해당 권한이 있으신가요?

네, 권한은 있지만 그 명령어를 어떻게 사용해야 하는지 모르겠습니다. Rails 콘솔로 들어가는 건가요? 사실 저는 Rails가 어떻게 동작하는지 잘 모르겠습니다.

Rails 콘솔에 접근하려면 서버에 SSH로 연결해야 합니다. 이렇게 하려면 컴퓨터에서 터미널을 열고 다음 명령어를 실행하세요:

ssh root@<your_forum_ip_address>

<your_forum_ip_address>를 Discourse 사이트의 IP 주소로 대체하세요.

이 명령어가 성공적으로 실행되면 다음과 같은 프롬프트가 표시됩니다. testeleven이라는 단어 대신 IP 주소 또는 드롭렛 이름이 표시됩니다:

root@testeleven:~#

cd /var/discourse를 입력하고 Enter 키를 누르세요.

이제 ./launcher enter app를 입력하고 Enter 키를 누르세요.

/var/www/discourse#와 유사한 것으로 끝나는 프롬프트가 표시되어야 합니다.

그 프롬프트에서 rails c를 입력하고 Enter 키를 누르세요. 이제 pry(main)> 와 유사한 프롬프트가 표시되어야 합니다. 이것이 Rails 콘솔입니다.

강제 2단계 인증을 비활성화하려면 SiteSetting.enforce_second_factor="no"를 입력하고 Enter 키를 누르세요.

SSH 세션을 종료하려면 터미널에 exit라는 단어를 세 번 입력해야 합니다. 첫 번째는 Rails 콘솔을 종료하기 위해, 두 번째는 Docker 컨테이너를 종료하기 위해, 세 번째는 SSH 세션을 종료하기 위해 입력합니다.

감사합니다. 설명이 매우 명확하고 상세했습니다. 아래처럼 수행했는데도 로그인 시 여전히 2단계 인증을 요구합니다. 어디가 잘못된 걸까요?

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"를 설정해도 문제가 해결되지 않습니다. 사용자의 2단계 인증 기록을 삭제해야 합니다.

이를 위해 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)

이 명령을 실행하면 콘솔에 2단계 인증 기록이 출력됩니다.

이제 해당 기록을 삭제하세요:

second_factor.destroy

이 명령을 실행한 후 콘솔을 종료할 수 있습니다. 명령 실행 후 사이트 로그인할 수 있어야 합니다.

이 과정에서 문제가 발생하면 알려 주세요.

정말 감사합니다. 잘 작동합니다.
다만, 저는 second_factor.destroy 명령을 사용하지 않았습니다. 대신 data 필드를 가져와 Authenticator를 수동으로 입력하여 2단계 인증 코드를 다시 생성했습니다.
네, 완벽하게 작동했습니다. 추가적인 보안을 위해 새로운 검증기를 다시 생성할 것입니다.
감사합니다.