2023 年 GitHub 分批强制 2FA,如今几乎所有活跃开发者账号都必须开启。本文覆盖 TOTP 技术原理、GitHub 2FA 配置全流程、国内验证器选型对比、以及最容易踩的恢复码管理陷阱。
一、政策背景
GitHub 从 2023 年 3 月起执行分批强制 2FA。收到通知后有 45 天注册窗口。开启后进入 28 天检查期,期间需成功使用 2FA 登录一次。
如果你是某个要求 2FA 的组织的外部协作者,必须先离开组织才能禁用 2FA。禁用后自动失去组织资源访问权限。
二、TOTP 技术原理
GitHub 使用的 TOTP 基于 RFC 6238:
Type: TOTP
Algorithm: SHA1(默认)
Digits: 6
Period: 30 秒
Issuer: GitHub
Label: GitHub:<username>
验证流程:绑定阶段 GitHub 生成共享密钥 → 用户扫码存入验证器 → 验证时双方用 (密钥 + 时间戳) 经 HMAC 计算 6 位数字 → 比对一致即通过。全程本地计算,不依赖网络。
三、配置步骤
1. GitHub → Settings → Password and authentication
2. Two-factor authentication → Enable two-factor authentication
3. 选择 Authenticator App → 页面显示二维码
4. 打开 TOTP 验证器扫码 → 输入 6 位验证码
5. 下载恢复码(16 个)→ 点击 I have saved my recovery codes
如果想在多台设备上配置,需在初次绑定时同时用每台设备扫描同一个二维码,或保存 setup key。2FA 启用后添加新设备需重新配置。
四、恢复码管理
GitHub 在开启 2FA 时生成 16 个恢复码,每个只能用一次。
错误做法:只存电脑桌面 txt、只存手机截图、根本没下载。
推荐做法:
1. 下载恢复码 txt
2. 导入密码管理器(1Password / Bitwarden / KeePass)
3. 打印一份纸质版
4. 加密云盘中额外存一份
三层存储(本地 + 云 + 纸质),基本不可能同时丢失。
五、日常触发场景
- 新设备/新浏览器登录 GitHub 网页版
- VS Code / JetBrains IDE 中授权 GitHub 账号
git push/git pull(取决于认证方式)- 调用 GitHub API(Token 过期或首次授权)
配置 SSH Key 可让 git push/pull 不触发 2FA。但网页登录和 IDE 授权仍会触发。
六、常见问题
Q:换手机怎么办?
纯本地存储型验证器(如 Google Authenticator 默认模式)→ 旧手机没做迁移 → 所有 2FA 丢失 → 逐平台申诉。支持云备份的验证器 → 新设备登录同一账号 → 自动恢复。
Q:哪些验证器支持云备份?
Microsoft Authenticator(Microsoft 账号)、Authy(Twilio 账号,但 +86 验证不稳定)、以及面向国内用户的方案如微信小程序「二次验证码Free2FA」(自动加密云备份,同一微信登录即可恢复)均支持。选型时重点考察:协议是否完全实现 RFC 6238、密钥加密方案是否透明、国内网络下是否可用。
七、总结
GitHub 2FA 不是"开了就行"——工具选型和恢复码管理同样重要。核心建议:
- 用支持云备份的 TOTP 验证器
- 恢复码三重备份
- 组织 Owner 至少配置两种 2FA 方式
- 每季度做一次恢复演练

3万+

被折叠的 条评论
为什么被折叠?



