背景
近期由于换了新手机,之前配置好的 Authenticator 应用无法使用,导致获取不到二次验证的 Authenticator 验证码,无法登录 GitHub。当我们配置 2FA 双重验证后,每次登录 GitHub 尽管密码输入正确都必须输入 2FA 生成的一次性验证码。如果我们无法获取 2FA 的验证码时,应该如何登录 GitHub?甚至当我们把 recovery code(恢复代码)也丢失后,该如何登录我们的 GitHub?
解决方案
情形 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 也丢失
当我在本地文件系统中翻到了当年的 github-recovery-codes.txt,用上述情形 1 方法恢复账户的。当我们既没有 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 的情况下可以通过 3 个步骤来恢复我们的 GitHub 账号:
- 验证 GitHub 账号绑定的邮箱
- 可以使用以下三种方式之一验证:常用的主机、GitHub 中设置的 SSH Key、Personal Access Token
- GitHub 客服将在 1-3 天内人工审核上述信息,如果审核成功,则会发送邮件通知我们
-
点击绿色的 "I understand, get started" 按钮。

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

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

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

- 这里有 3 种方式进行验证:
方式一:使用经常登录或最后一次登录 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.
- 然后将上述命令的输出复制粘贴到上图的多行文本框中。

- 点击绿色的 "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 的安全。


