### 问题描述 我在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工作的时候,需要查看手机获取验证码。有时我的手机并不在我的身边。有些网站对我来说并没有如此严苛的安全性要求,但是他们会强制我使用验证码。 哦,我想到了更讨厌的是必须要求我绑定手机号才能注册,比起手机号,我更喜欢使用邮箱,我现在已经不敢更换手机号码了,因为我有如此多的账号与之关联。如果我的号码不再可用,他们又要求必须用验证码登录,我该如何? [1]: https://www.simaek.com/usr/uploads/2025/07/3927947387.png Loading... ### 问题描述 我在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工作的时候,需要查看手机获取验证码。有时我的手机并不在我的身边。有些网站对我来说并没有如此严苛的安全性要求,但是他们会强制我使用验证码。 哦,我想到了更讨厌的是必须要求我绑定手机号才能注册,比起手机号,我更喜欢使用邮箱,我现在已经不敢更换手机号码了,因为我有如此多的账号与之关联。如果我的号码不再可用,他们又要求必须用验证码登录,我该如何? [1]: https://www.simaek.com/usr/uploads/2025/07/3927947387.png 最后修改:2025 年 07 月 07 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 6 如果觉得我的文章对你有用,请随意赞赏