从 2023 年 3 月开始到 2023 年底,GitHub 将逐步开始要求所有在 GitHub.com 上贡献代码的用户启用一种或多种双因素身份验证 (2FA)。如果您属于符合条件的群体,您将在该群体被选中进行注册时收到一封通知电子邮件,标志着 45 天的 2FA 注册期的开始,您将在 GitHub.com 上看到要求您注册 2FA 的横幅。如果您没有收到通知,那么您不属于需要启用 2FA 的群体,但我们强烈建议您启用 2FA。
关于强制 2FA 的资格
如果您在 GitHub 上采取了一些表明您是贡献者的行动,您的帐户将被选中进行强制性 2FA。符合条件的行动包括
- 发布供他人使用的应用程序或操作。
- 为您的仓库创建发布。
- 为特定高重要性仓库做出贡献,例如 开源安全基金会跟踪的项目。
- 成为高重要性仓库的管理员。
- 成为包含仓库或其他用户的组织的组织所有者。
- 成为企业管理员。
GitHub 不断评估我们帐户安全功能和 2FA 要求的改进,因此这些标准可能会随着时间的推移而改变。
注意:如果您的帐户有教育优惠券处于活动状态,则免于强制性 2FA。
关于组织和企业的强制性 2FA
GitHub 本身要求强制性 2FA,以提高个人开发人员和更广泛的软件开发生态系统的安全性。您的管理员也可能要求启用 2FA 作为加入其组织或企业的必要条件,但这些要求与该计划无关。要查找哪些用户已启用 2FA 或需要启用 2FA,请参阅 "查看您企业中的用户" 或 "查看您的组织中的用户是否已启用 2FA。"。
您的帐户是否符合强制性 2FA 的条件不会影响其他个人的资格。例如,如果您是组织所有者,并且您的帐户符合强制性 2FA 的条件,则不会影响您组织内其他帐户的资格。
注意:GitHub Enterprise 托管用户和本地 GitHub Enterprise Server 用户不需要启用 2FA。强制性 2FA 启用仅适用于在 GitHub.com 上具有密码的用户。
关于未能启用强制性 2FA
如果您在 45 天的设置期限内未启用 2FA,并且您允许 7 天的宽限期过期,您将无法访问 GitHub.com,直到您启用 2FA。如果您尝试访问 GitHub.com,系统将提示您启用 2FA。
如果您未能启用强制 2FA,属于您帐户的令牌将继续起作用,因为它们用于关键自动化。这些令牌包括个人访问令牌和为应用程序颁发的 OAuth 令牌,以代表您执行操作。启用 2FA 不会撤销或更改为您的帐户颁发的令牌的行为。但是,锁定帐户将无法授权新应用程序或创建新的 PAT,直到它们启用 2FA。
关于所需的 2FA 方法
我们建议将基于时间的的一次性密码 (TOTP) 应用程序设置为您的主要 2FA 方法,并将密钥或安全密钥添加为备份。如果您没有密钥或安全密钥,GitHub 移动应用程序也是一个不错的备份选项。短信在大多数国家/地区都很可靠,但存在一些威胁模型可能无法使用的安全风险。
目前,我们不支持密钥或安全密钥作为主要的 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,则必须在 GitHub.com 上注册 2FA,即使您的公司已经要求使用 2FA 进行单点登录 (SSO)。虽然使用 2FA 的 SSO 是保护组织或企业拥有资源的强大方法,但它不会保护与组织或企业无关的 GitHub.com 上用户拥有的内容,也不会保护用户的个人资料和设置。
GitHub 只要求您在初始身份验证和敏感操作时执行 2FA,因此即使您每天必须执行公司 2FA 才能访问 GitHub,您也很少需要通过 GitHub 第二次执行 2FA。有关敏感操作的更多信息,请参阅“超级用户模式”。
关于电子邮件验证和强制 2FA
当您登录 GitHub.com 时,电子邮件验证不计为 2FA。您的帐户电子邮件地址用于密码重置,这是一种帐户恢复形式。如果攻击者可以访问您的电子邮件收件箱,他们可以重置您的帐户密码并通过电子邮件设备验证检查,将您的帐户保护降低到单一因素。我们要求使用第二个因素来防止这种情况,因此第二个因素必须与您的电子邮件收件箱不同。当您启用 2FA 时,我们将在登录时不再执行电子邮件验证。
关于服务帐户和强制 2FA
组织中选定为强制实施双重身份验证的无人值守或共享访问帐户(例如机器人和服务帐户)必须注册 2FA。启用 2FA 不会撤销或更改为服务帐户发行的令牌的行为。GitHub 建议将服务帐户的 TOTP 密钥安全地存储在共享凭据存储中。有关更多信息,请参阅“使用双重身份验证管理机器人和服务帐户”。
关于强制实施 2FA 的隐私
如果您已被选定为强制实施 2FA,这并不意味着您必须向 GitHub 提供您的电话号码。只有在您使用短信进行 2FA 时,您才需要提供您的电话号码。相反,我们建议您将 TOTP 应用程序配置为您的主要 2FA 方法。有关更多信息,请参阅“配置双重身份验证”。
注意:您的地区可能未列在可用的短信选项中。我们根据每个地区的短信传递成功率进行监控,并禁止对传递率较低的地区进行设置。如果您在列表中没有看到您的地区,则必须设置 TOTP 应用程序。有关短信支持地区的更多信息,请参阅“支持短信身份验证的国家/地区”。