某些Github账号会在登录时在界面最上方限时在规定期限内绑定2FA,或者是电子邮件提示尽快启用2FA。2FA(Two-Factor Authorization),中文名是双因素认证。当你绑定2FA后,登录时除了需要输入密码以外,还需要提供一个时效极短(在Github中是30s)的验证码,但是使用PAT(Personal Access Token)或者SSH密钥将上传至仓库是不受影响的。

Github的2FA实际上有4种方式。但是其中短息验证码在大陆不可用;安全密钥又过于小众;而使用Github Mobile间接登录Github虽然可行,但是前提是APP本身也需要登录Github,还是需要2FA。所以实际上大陆最好的2FA方式是使用TOTP软件或浏览器扩展。

本篇文章将分享如何配置Github 2FA,顺带讲一下2FA丢失时的补救措施

配置2FA

登录Github,然后点击这个链接,随后向下找到”Enable two-factor authorization”按钮,点一下它。在跳转到的界面应该有一个二维码。

现在,在你的手机上安装一个TOTP软件(比如说Microsoft Authenticator)或者在浏览器上安装TOTP扩展(直接在浏览器自带的扩展商店搜索2fa,然后随便下一个,这里也会给一个链接下载2fa插件)

然后,用app或者扩展扫描二维码,然后你的2fa信息会自动导入(也可以点击Github页面上的setup key链接得到一串2fa密钥,然后手动导入或者保存,效果是一样的)。并将app或者扩展上显示的6位代码输入进Github上的输入框中,点击Continue。

接着,你应该会看到一个页面,此时点击Download,会下载一个txt。这个txt非常的重要,里面有2fa恢复代码。如果你的2fa丢失,你需要这个txt以恢复2fa。下载好过后点击最下方的按钮即可。

至此,你的2fa就算完成了。记得要将下载下来的txt以及2fa密钥妥善保管,不然,你的Github只能靠下面的方式复活了。

恢复2FA

当你阅读到这里的时候,想必是Github的2fa以经没法验证了。

不过还好,Github给你提供了一些方法补救:

  • Passkey
    如果你配置了Passkey,你可以直接使用Passkey登录,然后还是点击这个链接,往下翻到”Authenticator app”,点那个Edit,然后用类似的流程重新配置2fa。顺带重新下载恢复代码,在最下面的”Recovery codes”里。

  • 恢复代码
    还记得上一步叫你们下载的恢复代码吗?在进行2fa验证的时候点击下面的链接,然后从txt里找一条没用过的恢复代码填进去。剩下的事就和Passkey差不多了。

  • 如果你上面都没有
    那很糟糕了,不过也还算有补救方法。
    按照”恢复代码”的步骤进行,但是在输入恢复代码那一步点击最下面的带有”lockout”单词的链接。
    如果有弹窗,点带”understand”的按钮
    首先会验证你的电子邮箱,说白了就是电子邮箱验证码,随便整几下就行。
    接下来的界面如果你最上面的按钮是绿色,那么皆大欢喜,直接点一下就行。
    但是如果是灰色,点不了,那么你可以进行2选1:

    • PAT验证
      适用于有PAT的人,直接选择Personal Access Token选项,然后填入PAT即可。
    • ssh密钥验证
      适用于有ssh密钥的人,执行以下命令ssh -T git@github.com verify,你应该得到一串以”Please provide the following verification token to GitHub Support.”开头的一串内容,将这一整串内容复制粘贴。
      随后会经过1到3工作日的审核,然后等到什么时候审核通过了,你就可以恢复2fa了。
  • 最糟糕的情况
    如果你啥都没有,或者上面的审核被拒绝了。那么你还有最后一个措施,重新注册一个Github账号,把之前的东西都clone过来,这是你的唯一一个措施。

参考内容

https://github.com/settings/security
https://docs.github.com/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication
https://docs.github.com/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials