问题描述
我在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工作的时候,需要查看手机获取验证码。有时我的手机并不在我的身边。有些网站对我来说并没有如此严苛的安全性要求,但是他们会强制我使用验证码。
哦,我想到了更讨厌的是必须要求我绑定手机号才能注册,比起手机号,我更喜欢使用邮箱,我现在已经不敢更换手机号码了,因为我有如此多的账号与之关联。如果我的号码不再可用,他们又要求必须用验证码登录,我该如何?