如何在 GitLab 中禁用双因素身份验证?

How to disable the Two-factor authentication in GitLab?

我换了gitlab服务器。在旧系统上,我创建了一个备份,现在我已经将备份导入到新系统中。一切正常!

现在我遇到了问题,由于双因素身份验证,我无法登录。我认为,秘密盐改变了。

这是日志:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "user"=>{"otp_attempt"=>"[FILTERED]"}}

Completed 500 Internal Server Error in 10ms (ActiveRecord: 0.9ms)

OpenSSL::Cipher::CipherError (bad decrypt):
app/controllers/sessions_controller.rb:95:in valid_otp_attempt?'
app/controllers/sessions_controller.rb:63:in authenticate_with_two_factor'

如何为一个用户禁用双因素身份验证?

问候

此命令为所有用户关闭双因素身份验证:sudo gitlab-rails runner 'User.update_all(otp_required_for_login: false, encrypted_otp_secret: "")'

对于从源安装,您可以运行

cd /home/git/gitlab
sudo -u git -H bundle exec rails console production

得到一个rails控制台然后输入

User.update_all(otp_required_for_login: false, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_backup_codes: nil)

到运行命令。

Gitlab 已将禁用所有用户双因素身份验证的命令更新为:

sudo gitlab-rails runner 'User.find_each(&:disable_two_factor!)'

@poldixd 的回答应该仍然有效。如果它不尝试将 encrypted_opt_secret 设置为 nil 而不是 "".

在这里找到这个: https://gitlab.com/gitlab-org/gitlab-ce/issues/1960

对于正在研究如何仅为单个用户禁用 2FA 的任何人。我发现一个可行的解决方案是:

User.where(username: "username_goes_here").each(&:disable_two_factor!)

我为所有用户禁用 Gitlab Docker 的 2FA:

sudo -u git -H bundle exec rake gitlab:two_factor:disable_for_all_users RAILS_ENV=production

我知道 OP 很旧,但我是第一次遇到这个问题,并采取了以下步骤来重置用户帐户的 2FA:

  1. 以 Gitlab 管理员身份登录。
  2. 通过 Admin\Users 面板找到被锁定的用户。
  3. 将用户密码重置为临时密码(保留副本)。
  4. 打开锁定的用户个人资料。
  5. 点击右上角的“模拟”。
  6. 现在用户点击“编辑个人资料”。
  7. 单击“帐户”,单击“管理双因素身份验证”。
  8. 输入第 3 步中的密码,然后: 一种。单击“禁用双因素身份验证”并让用户重新启用,或者 b.单击“重新生成恢复代码”并将这些传递给用户。

无论哪种情况,您还需要向用户提供新的临时密码。