背景
起因是公司从明年开始使用Github上的Project管理的功能,来做每周的工作报告,即是 TodoList
类似每周工作报告一样的 如下图所示,每周可以可视化地看到每个人每周的工作进度。
由这里开始起步我漫漫的 Github
账号找回之路..
经过
第一步 账号密码
关于 Github
的账号密码,账号和密码我还是记得,因为平时也会经常使用,而且程序员都有一套账号密码管理系统,因为账号实在是太多太多了,这里我推荐使用 Password
手机软件进行账号密码管理。
第二步 TOTP 验证
首先向大家科普一下,什么是 TOTP
。
TOTP(Time - Based One - Time Password,基于时间的一次性密码)机制是一种用于增强身份验证安全性的算法。
以下是关于 TOTP 机制详细的介绍
- 双因素身份验证(2FA)和多因素身份验证(MFA)
-
广泛应用于需要增强登录安全的场景。例如,在在线金融服务领域,用户登录银行账户时,除了输入常规的用户名和密码之外,还需要输入
TOTP
生成的动态密码。这样,即使用户名和密码不幸被泄露,攻击者如果没有获取到当前有效的动态密码,也无法登录用户的账户。 -
常见的应用包括
Google
Authenticator
和Authy
等身份验证应用程序,这些应用生成基于 TOTP 算法的动态密码,并与用户的在线账户相绑定,提供更安全的登录方式。
- 登录验证过程
- 用户在登录页面输入常规的用户名和密码后,还需要打开相应的
TOTP
应用查看当前生成的动态密码,并将其输入到登录页面的特定输入框中(例如有些页面会有 “输入来自应用程序的验证码” 这样的提示框)。 - 服务器端会使用相同的算法和共享密钥,验证用户提供的动态密码是否匹配。如果匹配成功,则用户登录成功;如果动态密码不匹配或者已经过期(超过了时间步长),则登录失败,用户需要重新获取当前有效的动态密码再次尝试登录。
- 密码生成过程
- 在每个固定的时间步长(通常是 30 秒),服务器和客户端都会基于当前时间戳和共享密钥,使用
HMAC
算法生成一个哈希值。然后从这个哈希值中提取一个固定长度的动态密码。 - 也就是说,在这 30 秒内,用户和服务器根据相同的算法和共享密钥生成的动态密码是一致的。30 秒过后,随着时间戳的改变,密码会自动更新。
回到正题,但是我们完全没有设置过这个密码,所以只能走下面一步 Use a recovery code or begin 2FA account recovery
需要找到这个 Recovery code
才行。
第三步 通过 Github Recovery Code 登录账号
当我到这一步的时候,我也是一脸的懵逼,什么 Recovery Code
我好像从来没有获取过的呀。
选择第一个 Use your authenticator app,又跳转回到第二步骤,Pass!
选择第二个 尝试通过文档寻找到 Recovery Code
文档中提示,可能我们已经提前下载过这个 Recovery-Code
了,它的默认名字是 github-recovery-codes.txt
。
那么我们将目标锁定在本地的电脑中,看看是否能找到 github-recovery-codes
但是很可惜的是,我在本地的电脑中是找不到这个文件,至此我们只能走下一步了。
第四步 申诉验证
如图所示,需要验证三步,并且需要等待1-3个工作日。
- 验证当前账号的邮箱
- 验证设备,或者验证
SSH key
或者Personal access token
- 等待 1-3 个工作日
但是我的账号,没有设置 SSH Key
(如下图),所以看到这里的小伙伴们注意啦!!!
在找回账号以后,记得创建一个 SSH Key
以便不时之需!!
一定要设置,SSH Key 和 Personal access token
图中如果没有设置 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了吗?????
一线曙光
不幸中的万幸,我在电脑的回收站中,终于找到了 github-recovery-codes
,原来它长这样。经过这件事,大家一定要保管好自己的 github-recovery-codes
。或者在登录成功以后,马上下载好一份,在云存档中保存好它。
同时将 Authenticator app
验证信息保存到手机里面,方便以后登录的时候,不需要使用到 Recovery Codes
这里可以回到登录账号的 第二步,里面需要填到 Authenticator code
。这里推荐使用手机软件 TOTP Authenticator APP 扫描二维码,保存好这个验证信息。不过就像下图的描述一样,使用 authenticator app or browser extension
扫描也可以的。
总结和教训
最后排除万难终于是登录成功了。大家切记要保存关于登录相关的信息。成功登录以后,建议大家都保存好 SSH Key
信息和Personal Token
信息。最最最关键的是 recovery-codes 也要好好保留好。因为如果丢失了上述的话,可能需要解绑邮箱才能拿回账号了。