背景
更换设备导致 Authenticator App 无法使用,无法获取二次验证码,导致无法登录 GitHub。若配置了 2FA 但无法获取验证码,甚至 Recovery Code 也丢失,该如何恢复账户?
解决方案
情形 1:拥有 Recovery Code
当我们无法获取之前设置的 2FA (Two-factor authentication) 的验证码时,可以使用设置 2FA 时备份的 recovery code 进行恢复。
- 点击下图中的 Use a recovery code or begin 2FA account recovery。

- 打开设置 2FA 时保存的 github-recovery-codes.txt,此文件保存了 Recovery code。

- 该文件中有 16 个 Recovery code,可以任意选择一个输入。

- 点击 Verify 按钮,即可登录进入 GitHub。

- 此时,滚动到页面底部,可以看到 Authenticator methods 面板,在这里重新设置 2FA。
情形 2:Recovery Code 丢失
当既没有 Authentication code 并且 Recovery code 也丢失时,可以通过以下步骤恢复。
- 点击 Use a recovery code or begin 2FA account recovery 链接。

- 点击 Try 2FA account recovery, or unlink your account email address(es) 链接。

-
在没有 Recovery code 的情况下,通过以下三种方式之一验证:常用的主机、GitHub 中设置的 SSH key、Personal Access Token。GitHub 客服将在 1-3 天内人工审核上述信息,如果审核成功,则会发送邮件通知。
-
点击绿色的 I understand, get started 按钮。

- 点击绿色的 Send one-time password 按钮,向 GitHub 账号绑定的邮箱发送验证码。

- 打开电子邮箱,输入邮件中的验证码。

- 点击绿色的 Verify email address 按钮。

- 这里有三种方式来验证:
方式一:使用经常登录或最后一次登录 GitHub 的设备验证
- 点击 Verify with this device 按钮,采用这种方式必须使用自己经常登录或最后一次登录成功的电脑执行这些操作。

- 等待接收 GitHub 发送的邮件,大概需要 1-3 个工作日。

方式二:使用在 GitHub 中设置的 SSH Key 验证
- 点击 SSH key。

- 打开 GitHub 中配置的 SSH key 中对应电脑的终端,输入如下命令:
ssh -T [email protected] verify Please provide the following verification token to GitHub Support. AHDLSHSHDSKHINFVVQZYULPQ3AVKQNZGKPLUSUIUHJSDJSGHKSDJSHDSVJNFAV623FPHHSJHDSHKSHDSKGDSUYEG
- 将上述命令的输出复制粘贴到文本框中。

- 点击绿色的 Verify and submit for review 按钮。

- 等待接收 GitHub 发送的邮件,大概需要 1-3 个工作日。
方式三:使用 GitHub 中设置的 Personal Access Token 进行验证
- 该方法需要 GitHub 账号曾经设置过 Personal Access Token,否则该选项是禁用状态。如果是可用状态,点击 Personal access Token。

- 在新打开的页面中,输入你的 Personal Access Token,点击绿色的 Verify and submit for review 按钮。

- 等待接收 GitHub 发送的邮件,大概需要 1-3 个工作日。
总结
- 2FA (Two-factor authentication) 失效或者无法获取时如何恢复 GitHub 账号以及 Recovery Code 也丢失的情况下怎么恢复账号,可以使用常登录 GitHub 的电脑或者在 GitHub 中设置过的 SSH Key 或者 Personal Access Token。
- 综上所述,为了我们的 GitHub 账号安全,必须做好以下几点:
- 保证 GitHub 绑定的邮箱可用,如果旧邮箱不想使用了,记得及时将 GitHub 账号绑定的邮箱切换为新邮箱。
- 至少给 GitHub 配置一个 SSH Key,既可以通过 SSH Key 实现免密执行 Git 操作,又可以保证在丢失 Recovery Code 时能进行账号恢复操作。
- 给 GitHub 配置 2FA 双重验证,登录时必须使用 2FA 生成的一次性临时验证码,保证账号的安全性。
- 配置 2FA 时会生成 16 个 Recovery Code,必须备份并保证这些 Recovery Code 的安全。


