自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种双因素身份验证(2FA)。如果您属于符合条件的组,系统会在该组被选中进行注册时向您发送通知邮件,这标志着为期 45 天的 2FA 注册期的开始,您也会在 GitHub.com 上看到要求您注册 2FA 的横幅。如果您未收到通知,则说明您不属于必须启用 2FA 的组,尽管我们仍强烈建议您启用。
关于强制性 2FA 的资格
如果您在 GitHub 上进行过表明您是贡献者的操作,您的账户将被选中强制性 2FA。符合条件的操作包括
- 为他人发布应用或操作
- 为您的仓库创建发布
- 为特定高重要性仓库作出贡献,例如 由开源安全基金会跟踪的项目
- 成为高重要性仓库的管理员或贡献者
- 成为包含仓库或其他用户的组织的所有者
- 成为发布了一个或多个软件包的仓库的管理员或贡献者
- 成为企业管理员
GitHub 正在持续评估账户安全功能和 2FA 要求的改进,因此这些标准可能随时间而变化。
关于组织和企业的强制性 2FA
强制性 2FA 由 GitHub 本身要求,以提升个人开发者和更广泛的软件开发生态系统的安全性。您的管理员也可能要求启用 2FA 作为加入其组织或企业的前提,但这些要求与本计划分开。要查看哪些用户已启用 2FA 或被要求启用,请参见 查看企业中的成员 或 查看组织中用户是否启用 2FA。
您的账户是否符合强制性 2FA 的资格不会影响其他个人的资格。例如,如果您是组织所有者,且您的账户符合强制性 2FA 条件,这并不会影响组织内其他账户的资格。
注意
GitHub Enterprise 托管用户和本地部署的 GitHub Enterprise Server 用户不需要启用 2FA。强制性 2FA 的启用仅适用于在 GitHub.com 上使用密码的用户。
关于未能启用强制性 2FA
如果您未在 45 天的设置期间内启用 2FA,并且让 7 天的宽限期过期,则在您启用 2FA 之前将无法访问 GitHub.com。如果您尝试访问 GitHub.com,将会提示您启用 2FA。
如果您未能启用强制性 2FA,属于您账户的令牌仍会继续工作,因为它们用于关键的自动化。这些令牌包括个人访问令牌(PAT)和授予应用代表您操作的 OAuth 令牌。启用 2FA 不会撤销或更改已发放给您账户的令牌的行为。然而,已锁定的账户在启用 2FA 之前,无法授权新应用或创建新的 PAT。
关于所需的 2FA 方法
我们建议将基于时间的一次性密码(TOTP)应用设为您的主要 2FA 方法,并添加密码钥或安全钥作为备份。如果您没有密码钥或安全钥,GitHub Mobile 应用也是一个不错的备选。短信在大多数国家都可靠,但存在安全风险,某些威胁模型可能无法接受。
目前,我们不支持将密码钥或安全钥作为主要 2FA 方法,因为它们易于丢失且不支持在足够多的设备间同步。随着密码钥的广泛采用和同步支持的普及,我们将在未来支持其作为主要方式。
注意
我们建议在 GitHub.com 保留 Cookie。如果您将浏览器设置为每天清除 Cookie,您将永远没有经过验证的设备用于账户恢复,因为_device_id Cookie用于安全地证明您之前使用过该设备。更多信息请参见若丢失 2FA 凭证,如何恢复账户。
关于 TOTP 应用与强制性 2FA
TOTP 应用是 GitHub 推荐的 2FA 方式。有关配置 TOTP 应用的更多信息,请参见 配置双因素身份验证。
如果您不想在移动设备上下载应用,仍有多种跨平台的独立 TOTP 应用可供选择。对于桌面应用,我们推荐 KeePassXC;对于基于浏览器的插件,我们推荐 1Password。
您也可以手动设置任何生成符合 RFC 6238 的代码的应用。有关手动设置 TOTP 应用的更多信息,请参见 配置双因素身份验证。有关 RFC 6238 的更多信息,请参见 IETF 文档中的 TOTP:基于时间的一次性密码算法。
注意
如果您使用 FreeOTP 进行 2FA,可能会看到关于弱加密参数的警告。GitHub 使用 80 位密钥以确保与旧版 Google Authenticator 的兼容性。80 位低于 HOTP RFC 推荐的 128 位,但目前我们暂无更改计划,建议忽略此信息。更多信息请参见 IETF 文档中的 HOTP:基于 HMAC 的一次性密码算法。
关于 SAML SSO 与强制性 2FA
如果您被选中强制性 2FA,即使贵公司已经要求使用带 2FA 的单点登录(SSO),也必须在 GitHub.com 上注册 2FA。尽管带 2FA 的 SSO 是保护组织或企业拥有资源的有力方式,但它并不保护与组织或企业无关的 GitHub.com 上用户拥有的内容,也不保护用户的个人资料和设置。
GitHub 只要求您在首次身份验证以及执行敏感操作时进行 2FA,因此即使您每天都需要进行企业 2FA 才能访问 GitHub,通常也很少需要在 GitHub 上再次进行 2FA。有关敏感操作的更多信息,请参见 Sudo 模式。
关于电子邮件验证与强制性 2FA
当您登录 GitHub.com 时,电子邮件验证不算作 2FA。您的账户电子邮件地址用于密码重置,这是一种账户恢复方式。如果攻击者能够访问您的邮箱,他们可以重置账户密码并通过电子邮件设备验证检查,从而将您的账户保护降为单因素。我们要求第二因素以防止此情形出现,第二因素必须与您的邮箱不同。启用 2FA 后,我们将不再在登录时执行电子邮件验证。
关于服务账户与强制性 2FA
在您的组织中未受监管或共享访问的账户,如机器人和服务账户,如果被选中强制性双因素身份验证,必须注册 2FA。启用 2FA 不会撤销或更改已为该服务账户颁发的令牌的行为。GitHub 建议将该服务账户的 TOTP 密钥安全地存放在共享凭证存储中。更多信息请参见 使用双因素身份验证管理机器人和服务账户。
关于您在强制性 2FA 下的隐私
如果您被选中强制性 2FA,这并不意味着必须向 GitHub 提供您的手机号码。只有在使用短信进行 2FA 时才需要提供手机号。我们建议将 TOTP 应用配置为主要 2FA 方法。更多信息请参见 配置双因素身份验证。
注意
您所在的地区可能未在可用的短信选项中列出。我们会按地区监控短信投递成功率,并对投递率低的地区禁止设置。如果您在列表中未看到您的地区,必须改为设置 TOTP 应用。有关支持短信的地区信息,请参见 支持短信认证的国家/地区。