跳到正文
>_ITDITDWeb 安全平台

安全指南

设置 GitHub 双因素认证(2FA):验证器 App、passkey、恢复码,以及手机丢失时怎么办

依据 GitHub Docs 讲解如何设置 GitHub 2FA:以验证器 App 为主、passkey 作备用,恢复码的保存,设备丢失后的恢复(最长 3 个工作日),以及从 SMS 切换。

发布于 2026-10-06 更新于 2026-10-06 最后核实 2026-10-06 7 分钟阅读

对象:想给自己的 GitHub 账户加上双因素认证(2FA:在密码之外,再用 App 或密钥证明是你本人)的人,收到 GitHub「请开启 2FA」通知的人,以及换了或丢了手机、再也拿不到验证码的人。本指南依据 GitHub 的官方文档 GitHub Docs,按钮名称与文档中的原文一致(GitHub 界面为英文)。

哪些人必须在 GitHub 上使用 2FA

自 2023 年 3 月起,GitHub 一批一批地向在 GitHub.com 上贡献代码的用户推行强制 2FA。GitHub Docs 列出了以下触发条件:

  • 发布供他人使用的应用或 action
  • 为自己的仓库创建 release
  • 为特定的高重要性仓库(例如 Open Source Security Foundation 跟踪的项目)做贡献,或担任其管理员或贡献者
  • 拥有包含仓库或其他用户的组织
  • 担任发布过一个或多个软件包的仓库的管理员或贡献者
  • 担任企业管理员

GitHub 指出这些条件可能会随时间变化。你所在的批次被选中后,会收到通知邮件,45 天的启用期开始计算,GitHub.com 上也会出现横幅提示。如果从未收到邮件,说明你不在必须开启的群体中,但 GitHub 仍强烈建议开启 2FA。

45 天
从通知到启用截止日
7 天
宽限期;之后在开启 2FA 前无法使用 GitHub.com
28 天
开启 2FA 后的确认检查期
16 个
恢复码,每个只能用一次

7 天宽限期过后,在开启 2FA 之前无法访问 GitHub.com。已有的个人访问令牌(API 令牌)和 OAuth 令牌会继续有效,以免自动化流程中断。但被锁的账户无法授权新应用,也无法创建新令牌。

邮件验证不算 2FA

没有开启 2FA 的账户,在新设备上登录时可能会被要求输入邮件发来的验证码。GitHub Docs 明确说明,这种邮件验证不是 2FA。

原因是:控制了你邮箱的人,既能重置你的密码,也能通过邮件验证。第二要素必须是独立于邮箱的东西,例如验证器 App 或 passkey。

该用哪种方式

GitHub 支持 5 种 2FA 方式。GitHub Docs 建议以 TOTP 验证器 App 为主要方式,以 passkey 或安全密钥作为备用。如果两者都没有,它建议把 GitHub Mobile 作为不错的备用。

方式能否作为第一种方式GitHub Docs 的定位备注
验证器 App(TOTP)能推荐的主要方式GitHub 推荐带云备份的 App
SMS(短信)能不推荐可被拦截,不具备抗钓鱼能力;并非所有国家都可用
passkey不能(在 TOTP 或 SMS 之后)推荐的备用方式一步同时满足密码和 2FA
安全密钥不能(在 TOTP 或 SMS 之后)推荐的备用方式只作为第二要素,与密码一起使用
GitHub Mobile不能(在 TOTP 或 SMS 之后)没有 passkey 或密钥时的备用在 App 中批准推送通知

TOTP(基于时间的一次性密码)指的是每 30 秒显示一个新的 6 位数字的 App。GitHub 不限定 App,所以 Google Authenticator、Microsoft Authenticator、1Password 或其他任何 TOTP App 都可以。

passkey 和安全密钥不能作为第一种方式,根据 GitHub Docs 的说明,是因为它们容易丢失,而且目前能同步的设备范围太窄。所以顺序是:先用验证器 App 开启 2FA,再添加 passkey。

主要:验证器 App

手机上的 TOTP App,并开启它的云备份

备用:passkey 或安全密钥

电脑上的 passkey 或硬件密钥,丢了手机也不会被锁在门外

最后手段:恢复码

16 个码,保存在手机以外的地方,例如密码管理器

本站推荐的配置:主要方式、备用方式和恢复码分别放在不同的地方。

设置步骤(从验证器 App 开始)

1

安装验证器 App

在手机或电脑上安装 TOTP App。GitHub Docs 推荐能把验证码备份到云端的 App,这样换手机或丢手机后,新设备也能生成同样的验证码。

2

打开「Password and authentication」

在任意 GitHub 页面点击右上角的头像,再点击「Settings」。在侧边栏的「Access」部分,点击「Password and authentication」(密码和身份验证)。

3

开启 2FA 并扫描二维码

在「Two-factor authentication」部分,点击「Enable two-factor authentication」。用 App 扫描二维码,把 6 位验证码填入「Verify the code from the app」下方的输入框。

如果无法扫描,点击「setup key」,会显示一串可以手动输入到 App 中的代码。

4

保存恢复码并完成

在「Save your recovery codes」下点击「Download」。保存好之后,点击「I have saved my recovery codes」开启 2FA。保存在哪里,见下一节。

5

添加 passkey 作为第二种方式

在同一页面的「Passkeys」下点击「Add a passkey」,用密码或其他方式确认后按提示操作。Windows Hello、Face ID、Touch ID 等平台验证器都可以登记为 passkey。

如果是硬件安全密钥,点击「Security keys」旁的「Add」,再点击「Register new security key」。如果是 GitHub Mobile,在 App 中登录并允许推送通知,该设备就能用于 2FA。

6

在 28 天内用 2FA 登录一次

开启 2FA 后,账户会进入 28 天的确认检查期。在此期间成功用 2FA 登录一次,检查期即结束。如果到第 28 天还没有登录过,GitHub 会要求你执行 2FA;如果失败,就必须重新配置 2FA 设置。

保存恢复码

恢复码是所有 2FA 方式都无法使用时,让你重新进入账户的一次性代码。一共 16 个,每个用过一次就失效。

合适的地方

  • 密码管理器(GitHub Docs 推荐)
  • 打印出来,放在家里固定的地方
  • 加密的外部存储

应避免的地方

  • 只存在装着验证器 App 的同一部手机里(手机丢了,两者一起丢)
  • 一直留在「下载」文件夹里(默认文件名 github-recovery-codes.txt)
  • 通过聊天或邮件发给别人

之后想再次查看,在「Password and authentication」页面点击「Recovery codes」旁的「View」,然后使用「Download」「Print」或「Copy」。生成新的恢复码会让之前生成的所有恢复码失效,所以请立即保存新的一组。

GitHub Docs 还把 SSH 密钥和个人访问令牌列为恢复手段。它建议保留 GitHub.com 的 Cookie:如果浏览器每天清除 Cookie,你就永远不会有可用于恢复的已验证设备,因为证明你以前用过这台设备的正是 _device_id 这个 Cookie。

手机丢了或换了

你手上还剩什么,决定了是能立刻进去,还是要等待审核。请按顺序尝试。

还剩下的怎么做需要多久
恢复码在登录界面选择「More options」→「2FA recovery code」立即
passkey 或安全密钥用它登录立即
验证器 App 的备份在新手机上恢复 App立即
密码,加上以前用过的设备、SSH 密钥或个人访问令牌「More options」→「Begin account or email recovery」GitHub Support 审核,最长 3 个工作日
以上都没有账户无法找回;解除邮箱关联,用于新账户—
1

先试恢复码或 passkey

打开 https://github.com/login,输入用户名和密码,在要求 2FA 时打开「More options」。选择「2FA recovery code」并输入一个码,或使用 passkey。进去之后,立刻在新手机上重新设置 2FA。

2

什么都没有时,申请账户恢复

在「More options」下点击「Begin account or email recovery」,输入发到你邮箱的一次性密码。然后选择一个恢复验证要素:「Verify with this device」(以前在这个账户上用过的设备)、SSH 密钥或个人访问令牌。

GitHub Support 的工作人员会审核请求,并在 3 个工作日内通过邮件回复。在此期间重复提交的请求不会被审核。如果在 3 到 5 天的等待期内找到了恢复码或其他 2FA 方式,随时都可以使用。

有些账户连 GitHub Support 也无法恢复

GitHub Docs 明确写道,出于安全原因,如果你同时丢失了 2FA 凭据和恢复手段,GitHub Support 不会恢复已开启 2FA 的账户的访问权限。SSH 密钥在一段时间不活动后也会从账户中删除,所以旧密钥可能不算数。

这种情况下,唯一的办法是把邮箱地址从被锁的账户解除关联,再关联到新账户或已有账户。请在开启 2FA 的当天就设置好备用方式并保存恢复码。

从 SMS 切换到验证器 App

如果已经在用 SMS,可以在不关闭 2FA 的情况下添加或更换方式。因为 2FA 一直开着,你的恢复码和要求 2FA 的组织的成员资格都会保留。

1

添加验证器 App

在「Password and authentication」的「Two-factor methods」下,点击验证器 App(TOTP)方式旁的「Add」。扫描二维码,输入 6 位验证码,点击「Save」。

2

设为首选方式

在「Two-factor authentication」的「Preferred 2FA method」下拉菜单中选择验证器 App。登录时就会首先显示这种方式。

3

不再需要 SMS 时将其删除

在「Two-factor methods」列表中,从 SMS 旁的菜单里删除它。GitHub Docs 提示,所在组织禁止不安全方式的成员,应先设置安全的方式,再删除 SMS。删除前,请确认能用 App 登录。

有些组织会把使用 SMS 的成员挡在门外

组织所有者可以开启「Only allow secure two-factor methods」(只允许安全的双因素方式)。GitHub Docs 把 passkey、安全密钥、验证器 App 和 GitHub Mobile 定义为安全方式。在这样的组织里,设置了任何 SMS 方式的成员都无法访问组织资源。

顺便检查的其他设置

2FA 保护的是登录。你已经签发的令牌和密钥、已经授权的应用,仍然是进入账户的独立入口。在同一天一起检查,只需多花几分钟。

GitHub 账户要检查的项目
添加 passkey
「Password and authentication」→「Passkeys」→「Add a passkey」。可作为 2FA 备用,还能省去输入密码
使用有有效期的令牌
「Settings」→「Developer settings」→「Personal access tokens」→「Fine-grained tokens」→「Generate new token」。选择「Expiration」(有效期)并限制仓库访问范围
清理已授权的应用
「Settings」→「Applications」的「Authorized OAuth Apps」和「Authorized GitHub Apps」标签页。撤销不认识或不再使用的应用
检查 SSH 密钥
「Settings」→「SSH and GPG keys」。删除不认识或过旧的密钥
个人推送保护
「Settings」→「Code security」→「Push protection for yourself」。阻止把包含秘密信息的内容推送到公开仓库(默认开启)
Dependabot 警报
「Settings」→「Code security」→「Dependabot alerts」→「Enable all」。也可以设置为对新仓库自动开启
安全日志
「Settings」→「Security log」(在「Archives」部分)。列出最近 90 天的操作

优先使用 fine-grained 令牌,而不是 classic 令牌

个人访问令牌(PAT:在 API 和 git 操作中代替密码使用的字符串)有 classic 和 fine-grained 两种。GitHub 建议尽可能使用 fine-grained 令牌,因为 classic 令牌能访问你有权访问的所有组织中的所有仓库,以及你个人账户中的所有仓库。

GitHub 会自动删除一年未使用的令牌,但仍强烈建议设置有效期。如果只是在命令行里使用 GitHub,用 GitHub CLI 或 Git Credential Manager 就完全不需要创建令牌。为什么从仓库里删除泄露的令牌还不够,见 GitHub 上公开的 543,699 个凭据仍然有效(英文)。

秘密扫描和推送保护适用于哪里

秘密扫描(自动检测代码中的 API 密钥等秘密信息)在公开仓库上免费且自动运行。仓库的推送保护,在仓库的「Settings」→「Advanced Security」中先开启「Secret Protection」,再开启「Push protection」。

组织拥有的私有仓库需要付费的 GitHub Secret Protection。普通个人账户中的私有仓库不在覆盖范围内。对于这些仓库,可以用 gitleaks 这类本地 pre-commit 检查来补上。

组织所有者:要求成员开启 2FA

在组织的「Settings」中,于「Authentication security」下勾选「Require two-factor authentication for everyone in your organization」并点击「Save」。GitHub Free 和 GitHub Team 方案都可以使用。再加上「Only allow secure two-factor methods」,还能把使用 SMS 的成员挡在外面。

开启后,没有 2FA 的成员会失去对组织资源的访问权限,没有 2FA 的外部协作者会被移除。机器人和服务账户也算在内,所以切换前请提前通知,并在「People」页面确认谁已经在用 2FA。

检查清单

任务位置时间
用验证器 App 开启 2FA「Settings」→「Password and authentication」5 分钟
把恢复码保存到密码管理器同一页面「Recovery codes」→「View」2 分钟
添加 passkey 或安全密钥同一页面「Passkeys」/「Security keys」3 分钟
在 28 天内用 2FA 登录一次——
把 classic 令牌换成有有效期的 fine-grained 令牌「Settings」→「Developer settings」每个令牌 5 分钟
清理已授权的应用和 SSH 密钥「Settings」→「Applications」/「SSH and GPG keys」5 分钟
检查推送保护和 Dependabot 警报「Settings」→「Code security」2 分钟
如果你是组织所有者,要求成员开启 2FA组织「Settings」→「Authentication security」包括提前通知在内需要几天

出处(公开信息)

本指南中的步骤、期限和行为,已于 2026 年 10 月 6 日对照 GitHub Docs 及其他官方页面核实。GitHub 的界面和条件会变化,操作前请查看原始页面。

接下来阅读

FAQ

Q在 GitHub 的哪里开启双因素认证?
A

点击右上角的头像,选择「Settings」(设置),在侧边栏的「Access」(访问)部分点击「Password and authentication」(密码和身份验证)。在「Two-factor authentication」部分点击「Enable two-factor authentication」,用验证器 App(TOTP)或 SMS 完成设置。passkey、安全密钥和 GitHub Mobile 可以在设置好 TOTP 或 SMS 之后添加。

QGitHub 的 2FA 是强制的吗?
A

自 2023 年 3 月起,GitHub 分批要求在 GitHub.com 上贡献代码的用户开启 2FA。触发条件包括创建 release、发布应用或 action、担任发布过软件包的仓库的管理员或贡献者、拥有组织等。被选中的用户会收到邮件,并有 45 天的启用期和 7 天的宽限期;之后在开启 2FA 之前无法使用 GitHub.com。没有收到通知的用户不是必须开启,但 GitHub 强烈建议开启。

QGitHub 的 2FA 可以用 SMS 吗?
A

在支持的国家可以,GitHub 公布了国家列表。但 GitHub Docs 强烈建议改用 TOTP 验证器 App,因为 SMS 容易被拦截、不具备抗钓鱼能力,可靠性也较低。有些组织会阻止设置了 SMS 2FA 的成员访问。

Q手机丢了或换了,收不到 GitHub 的 2FA 验证码,怎么办?
A

先找恢复码(默认文件名为 github-recovery-codes.txt),在登录界面依次选择「More options」→「2FA recovery code」并输入一个。已登记的 passkey 或安全密钥也可以用。如果这些都没有,选择「Begin account or email recovery」,验证邮件里的一次性密码,再用以前用过的设备、SSH 密钥或个人访问令牌证明身份。GitHub Support 审核请求后,会在 3 个工作日内通过邮件回复。

Q恢复码也丢了,GitHub Support 能恢复我的账户吗?
A

不能。GitHub Docs 明确写道,出于安全原因,如果你丢失了 2FA 凭据和恢复手段,GitHub Support 无法恢复已开启 2FA 的账户的访问权限。到了这一步账户就无法找回了;你能做的,是把邮箱地址从被锁的账户解除关联,用于新账户。

Q怎样从 SMS 切换到验证器 App?
A

在「Password and authentication」的「Two-factor methods」下,点击验证器 App(TOTP)方式旁的「Add」,扫描二维码,输入 6 位验证码并点击「Save」。然后在「Preferred 2FA method」中选择这个 App,如果不再需要 SMS,就将其删除。不需要关闭 2FA,所以恢复码依然有效。