三千字记录 找回 Github 账号的经历 TOTP & Github Recovery codes

175 阅读5分钟

背景

起因是公司从明年开始使用Github上的Project管理的功能,来做每周的工作报告,即是 TodoList 类似每周工作报告一样的 如下图所示,每周可以可视化地看到每个人每周的工作进度。

image.png

由这里开始起步我漫漫的 Github 账号找回之路..

经过

第一步 账号密码

关于 Github 的账号密码,账号和密码我还是记得,因为平时也会经常使用,而且程序员都有一套账号密码管理系统,因为账号实在是太多太多了,这里我推荐使用 Password 手机软件进行账号密码管理。

image.png

第二步 TOTP 验证

image.png

首先向大家科普一下,什么是 TOTP

TOTP(Time - Based One - Time Password,基于时间的一次性密码)机制是一种用于增强身份验证安全性的算法。

以下是关于 TOTP 机制详细的介绍

  1. 双因素身份验证(2FA)和多因素身份验证(MFA)
  • 广泛应用于需要增强登录安全的场景。例如,在在线金融服务领域,用户登录银行账户时,除了输入常规的用户名和密码之外,还需要输入 TOTP 生成的动态密码。这样,即使用户名和密码不幸被泄露,攻击者如果没有获取到当前有效的动态密码,也无法登录用户的账户。

  • 常见的应用包括 Google AuthenticatorAuthy 等身份验证应用程序,这些应用生成基于 TOTP 算法的动态密码,并与用户的在线账户相绑定,提供更安全的登录方式。

  1. 登录验证过程
  • 用户在登录页面输入常规的用户名和密码后,还需要打开相应的 TOTP 应用查看当前生成的动态密码,并将其输入到登录页面的特定输入框中(例如有些页面会有 “输入来自应用程序的验证码” 这样的提示框)。
  • 服务器端会使用相同的算法和共享密钥,验证用户提供的动态密码是否匹配。如果匹配成功,则用户登录成功;如果动态密码不匹配或者已经过期(超过了时间步长),则登录失败,用户需要重新获取当前有效的动态密码再次尝试登录。
  1. 密码生成过程
  • 在每个固定的时间步长(通常是 30 秒),服务器和客户端都会基于当前时间戳和共享密钥,使用 HMAC 算法生成一个哈希值。然后从这个哈希值中提取一个固定长度的动态密码。
  • 也就是说,在这 30 秒内,用户和服务器根据相同的算法和共享密钥生成的动态密码是一致的。30 秒过后,随着时间戳的改变,密码会自动更新。

回到正题,但是我们完全没有设置过这个密码,所以只能走下面一步 Use a recovery code or begin 2FA account recovery

需要找到这个 Recovery code 才行。

第三步 通过 Github Recovery Code 登录账号

image.png

当我到这一步的时候,我也是一脸的懵逼,什么 Recovery Code 我好像从来没有获取过的呀。

选择第一个 Use your authenticator app,又跳转回到第二步骤,Pass!

选择第二个 尝试通过文档寻找到 Recovery Code

image.png

文档中提示,可能我们已经提前下载过这个 Recovery-Code 了,它的默认名字是 github-recovery-codes.txt

那么我们将目标锁定在本地的电脑中,看看是否能找到 github-recovery-codes

image.png

但是很可惜的是,我在本地的电脑中是找不到这个文件,至此我们只能走下一步了。

第四步 申诉验证

image.png

如图所示,需要验证三步,并且需要等待1-3个工作日。

  • 验证当前账号的邮箱
  • 验证设备,或者验证 SSH key 或者 Personal access token
  • 等待 1-3 个工作日

image.png

但是我的账号,没有设置 SSH Key(如下图),所以看到这里的小伙伴们注意啦!!! 在找回账号以后,记得创建一个 SSH Key 以便不时之需!!

一定要设置,SSH Key 和 Personal access token

image.png

图中如果没有设置 SSH Key 或者 Personal access token 的话,按钮会是灰色的。

如何获取 SSH key 公钥 & 获取 Personal Token
cat ~/.ssh/id_rsa.pub
ssh -vT git@github.com verify

第五步 unlink account email address(es)解绑当前账号的邮箱

如果上面四步骤都没办法登录的话,只能走的第五步。解绑当前的邮箱账号,重新创建邮箱绑定当前的账号。万不得已的情况下,才会选择吧。到这一步的时候,我已经有点绝望了。难道我要重新创建邮箱才能正常使用Github了吗?????

image.png

一线曙光

不幸中的万幸,我在电脑的回收站中,终于找到了 github-recovery-codes,原来它长这样。经过这件事,大家一定要保管好自己的 github-recovery-codes。或者在登录成功以后,马上下载好一份,在云存档中保存好它。

image.png

image.png

同时将 Authenticator app 验证信息保存到手机里面,方便以后登录的时候,不需要使用到 Recovery Codes 这里可以回到登录账号的 第二步,里面需要填到 Authenticator code。这里推荐使用手机软件 TOTP Authenticator APP 扫描二维码,保存好这个验证信息。不过就像下图的描述一样,使用 authenticator app or browser extension 扫描也可以的。

image.png

总结和教训

最后排除万难终于是登录成功了。大家切记要保存关于登录相关的信息。成功登录以后,建议大家都保存好 SSH Key信息和Personal Token 信息。最最最关键的是 recovery-codes 也要好好保留好。因为如果丢失了上述的话,可能需要解绑邮箱才能拿回账号了。

参考文章

配置双重身份验证