GitHub 身份验证的工作原理

已完成

在上一单元中,你已了解了团队、组织和企业级别的典型管理任务。 在本单元中,你将了解组织所有者执行的最常见管理任务之一,用于设置和控制用户对 GitHub 的身份验证。

GitHub 的验证选项

可通过几种方法向 GitHub 进行身份验证:

用户名和密码

管理员可允许用户继续使用默认的用户名及密码身份验证方法,有时也称为“基本”HTTP 身份验证方案。

注释

GitHub 不再支持对 Git作或 API 使用情况进行密码身份验证。 我们强烈建议使用本单元中列出的某个(或几个)其他选项。

个人访问令牌

个人访问令牌屏幕的屏幕截图。

使用 GitHub API 或命令行时,可使用个人访问令牌 (PAT) 替代密码向 GitHub 进行身份验证。 用户可通过 GitHub 的设置选项生成令牌,并将令牌权限绑定到存储库或组织。 当用户使用 Git 命令行工具与 GitHub 交互时,他们可以在系统要求提供其用户名和密码时输入令牌信息。

SSH 密钥

除了使用个人访问令牌,用户还可在 SSH 密钥的帮助下,通过 SSH 连接到远程服务器和服务并进行身份验证。 每次交互时,用户使用 SSH 密钥,就无需再提供用户名和个人访问令牌。

设置 SSH 时,用户将生成一个 SSH 密钥,将它添加到 ssh-agent,然后将该密钥添加到其 GitHub 帐户。 将 SSH 密钥添加到 ssh-agent 可确保 SSH 密钥具有作为额外安全层的密码。 用户可通过配置 Git 的本地副本来自动提供密码,也可在每次使用 Git 命令行工具与 GitHub 交互时手动提供。

你甚至可以对使用 SAML 单一登录 (SSO) 的组织所拥有的存储库使用 SSH 密钥。 如果该组织提供 SSH 证书,则用户也可以使用它来访问组织的存储库,而无需将证书添加到其 GitHub 帐户。

部署密钥

部署密钥是 GitHub 中另一种类型的 SSH 密钥,可授予用户访问单个存储库的权限。 GitHub 会将密钥的公共部分直接附加到存储库,而不是个人用户帐户,密钥的私有部分将仍保留在用户服务器上。 部署密钥默认为只读,但在将其添加到存储库时可授予它们写入权限。

若要配置分支设置,请执行以下作:

  1. 转到存储库的设置。
  2. 在左侧边栏中,在“安全性”下,单击“ 部署密钥”。
  3. 找到 “添加部署密钥 ”选项以创建新密钥。

显示“部署密钥”选项上的“添加部署密钥”的屏幕截图。

GitHub 中已添加的安全选项

GitHub 提供了一系列安全选项来帮助保护帐户和组织资源。

双因素身份验证

双因素身份验证屏幕的屏幕截图。

双重身份验证(2FA),有时称为多重身份验证(MFA),为 GitHub 帐户添加了额外的保护层。 使用 2FA,用户使用用户名和密码登录,然后提供第二种身份验证形式。

GitHub 支持多个二重选项:

  • 验证器应用(如 Microsoft Authenticator、Google Authenticator 或 Authy),用于生成基于时间的一次性代码。
  • 支持 FIDO2/WebAuthn 的硬件安全密钥(如 YubiKey 或 Titan 安全密钥)。
  • 无密码、防钓鱼身份验证的密钥。
  • 基于短信的代码受支持,但被视为安全性低于其他选项,不建议作为主要方法。

2FA 强制:

  • 对于 GitHub 团队和 GitHub Enterprise Cloud 上的组织,组织所有者可以要求成员、外部协作者和计费经理为其个人帐户启用 2FA。
  • 企业托管用户(EMU)和 GitHub Enterprise Server(GHE.com):管理员只需对企业管理的帐户要求 2FA,但不能对用户的个人 GitHub.com 帐户强制实施 2FA。

强制实施 2FA 有助于保护组织免受未经授权的访问,并增强存储库和敏感数据的安全性。

SAML SSO

如果使用标识提供者(IdP)集中管理用户的标识,则可以配置 SAML 单一登录(SSO),以保护 GitHub 上的组织资源。 SAML SSO 允许组织和企业所有者控制和保护对存储库、问题、拉取请求等的访问。 访问资源时,GitHub 会将用户重定向到使用组织的 IdP 进行身份验证。

GitHub 支持所有实现 SAML 2.0 标准的标识提供者,并正式支持多个热门提供商,包括:

  • Active Directory 联合身份验证服务 (AD FS)。
  • Microsoft Entra ID。
  • Okta。
  • OneLogin。
  • PingOne。

LDAP (GitHub Enterprise Server)

LDAP(轻型目录访问协议)是一种广泛使用的协议,用于访问和管理用户目录信息。 在 GitHub Enterprise Server 上,LDAP 集成允许针对现有公司目录对用户进行身份验证并集中管理存储库访问。

GitHub Enterprise Server 与主要 LDAP 服务集成,例如:

GitHub Enterprise Server 与一些常见 LDAP 服务集成,这些服务包括:

  • Active Directory。
  • Oracle Directory Server Enterprise Edition。
  • OpenLDAP。
  • Open Directory。