问题描述

我在Gitea安全配置中起用了两步验证和安全密钥,并且存储在Apple密码应用中。但是由于我的疏忽,我将Gitea相关的通行密钥删除了,导致我无法访问Gitea。

解决方法

我在提问了GPT之后得到的回答是通过gitea admin user remove-2fa命令删除用户2FA验证,但是对我来说没有帮助,我并没有在我的实例上找到相关的子命令。

在研究一番后,最终我找到了方法,对数据库进行操作。

在对数据库进行任何操作时都应该小心谨慎,并且提前备份好数据库!

两步验证

两步验证MFA/2FA通常是一个基于时间生成的OTP密码,存储在Apple密码、Google Authenticator、Microsoft Authenticator等应用中。

如果想关闭两步验证,需要删除gitea数据表two_factor中相关记录。

首先需要查询你要操作的用户,获取用户id。

select id from user where name='username';

通过用户id删除two_factor配置。

delete from two_factor where uid = $uid

现在你可以通过密码登录了。

如果你同时启用了安全密钥,只删除两步验证可能不起作用,因为要求至少进行一种额外身份验证。

安全密钥

WebAuthn是一种无密码验证方式,可以通过手机、USB密钥或者生物识别器来进行身份验证。

如果想关闭两步验证,需要删除gitea数据表webauthn_credential中相关记录。

同样需要查询你要操作的用户,获取用户id。

select id from user where name='username';

通过用户id删除webauthn_credential配置。

delete from webauthn_credential where user_id = $uid

现在你可以通过密码登录了。

后记

回顾密码的发展历史,从单一密码,到密保问题,短信验证码OTP,再到现在的无密码验证,密码的强度要求越来越高,但是用户体验却比以前更差。即使现在密码变得如此繁琐,但是仍然不能避免密码被盗取破解的风险。

我非常讨厌在使用PC工作的时候,需要查看手机获取验证码。有时我的手机并不在我的身边。有些网站对我来说并没有如此严苛的安全性要求,但是他们会强制我使用验证码。

哦,我想到了更讨厌的是必须要求我绑定手机号才能注册,比起手机号,我更喜欢使用邮箱,我现在已经不敢更换手机号码了,因为我有如此多的账号与之关联。如果我的号码不再可用,他们又要求必须用验证码登录,我该如何?

最后修改:2025 年 07 月 07 日
如果觉得我的文章对你有用,请随意赞赏