跳至主要内容

关于 GitHub 身份验证

您可以通过在不同位置使用不同凭据进行身份验证,安全地访问您账户的资源。

关于 GitHub 身份验证

为确保账户安全,您必须先进行身份验证才能访问 GitHub 上的某些资源。进行身份验证时,您需要提供或确认专属于您的凭据,以证明您就是您所声明的身份。

您可以通过多种方式访问 GitHub 中的资源:在浏览器中、使用 GitHub Desktop 或其他桌面应用、通过 API,或使用命令行。每种访问方式支持不同的身份验证模式。

  • 用户名和密码(或社交登录)加上双因素身份验证,或密码密钥(仅适用于 GitHub Free 和 GitHub Enterprise Cloud)
  • 个人访问令牌
  • SSH 密钥

在浏览器中进行身份验证

如果您是受托用户的企业成员,则会通过 IdP 在浏览器中对 GitHub 进行身份验证。更多信息,请参阅 GitHub Enterprise Cloud 文档中的 关于受托用户的身份验证

如果您不是受托用户企业的成员,则会使用 GitHub 用户名和密码,或密码密钥进行身份验证。您也可以使用双因素身份验证和 SAML 单点登录,这些可能由组织或企业所有者强制要求。

注意

自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种双因素身份验证(2FA)。如果您属于符合条件的组,系统会在该组被选中进行注册时向您发送通知邮件,这标志着为期 45 天的 2FA 注册期的开始,您也会在 GitHub.com 上看到要求您注册 2FA 的横幅。如果您未收到通知,则说明您不属于必须启用 2FA 的组,尽管我们仍强烈建议您启用。

有关 2FA 注册推广的更多信息,请参阅这篇博客文章

如果您需要在 GitHub.com 上使用多个账户(例如个人账户和服务账户),可以快速在账户之间切换,而无需每次都重新进行身份验证。更多信息,请参阅 在账户之间切换

  • 仅用户名和密码

    • 创建账户时会为您生成密码。我们建议您使用密码管理器生成随机且唯一的密码。更多信息,请参阅 创建强密码
    • 如果您尚未启用 2FA,GitHub 在您首次从新设备或未识别设备(如新浏览器配置文件、已删除 Cookie 的浏览器或新计算机)登录时,可能会要求额外的验证。更多信息,请参阅 登录时验证新设备
  • 社交登录

    • 您可以使用 Google 或 Apple(在创建 GitHub 账户时支持的社交登录提供商)进行身份验证。我们建议您同时配置 2FA,并添加密码密钥或密码作为额外的账户恢复机制。
    • 如果您已有使用密码创建的账户,可以将社交登录邮箱添加到该账户。这样,在登录 GitHub 时,您可以将社交登录身份作为第一因素(密码)的替代。
    • 您可以在 GitHub 邮箱设置页面取消关联社交登录身份。更多信息,请参阅 从已锁定账户中取消关联邮箱地址
  • 双因素身份验证(2FA)(推荐)

    • 如果您启用了双因素身份验证(2FA),在使用社交登录或用户名+密码登录后,系统会提示您输入移动设备上基于时间的一次性密码(TOTP)应用生成的代码,或通过短信(SMS)收到的代码。

    • 配置 2FA 后,您的账户会进入为期 28 天的检查期。只要在这 28 天内成功完成 2FA,即可退出检查期。若未在此期间完成 2FA,系统将在您之后的任意 GitHub 会话中要求您完成 2FA。

    • 如果您无法在第 28 天完成 2FA 检查,系统会提供一个快捷方式,让您重新配置 2FA 设置。必须在重新配置后才能继续使用 GitHub。更多信息,请参阅 使用双因素身份验证访问 GitHub配置双因素身份验证

    • 除使用 TOTP 应用或短信外,您还可以选择使用 GitHub Mobile 或基于 WebAuthn 的安全密钥作为备用身份验证方式。请参阅 使用 GitHub Mobile 配置双因素身份验证使用安全密钥配置双因素身份验证

      注意

      如果您无法使用任何恢复方式,则意味着您已永久失去对账户的访问权限。不过,您可以解除与被锁定账户关联的电子邮件地址。解除关联的电子邮件地址随后可以绑定到新的或已有的账户。更多信息,请参阅 解除锁定账户的电子邮件地址关联

  • 密码密钥

    • 您可以向账户添加密码密钥,以实现安全的免密码登录。密码密钥同时满足密码和 2FA 的要求,登录时只需一步完成。请参阅 关于密码密钥
  • SAML 单点登录

    • 在访问使用 SAML 单点登录的组织或企业账户拥有的资源之前,您可能还需要通过 IdP 进行身份验证。更多信息,请参阅 GitHub Enterprise Cloud 文档中的 关于单点登录的身份验证

会话 Cookie

GitHub 使用 Cookie 提供服务并提升安全性。您可以在 GitHub Cookie 中查看有关 GitHub Cookie 的详细信息。

  • gist.github.com 与 github.com 使用不同的 Cookie。
  • GitHub 通常在用户两周未活动后标记其会话为待删除。
  • 退出登录时,GitHub 并不会立即删除会话。GitHub 会定期自动删除已过期的会话。

使用 GitHub Desktop 进行身份验证

您可以通过浏览器使用 GitHub Desktop 进行身份验证。更多信息,请参阅 在 GitHub Desktop 中进行身份验证

使用 API 进行身份验证

您可以通过多种方式对 API 进行身份验证。更多信息,请参阅 对 REST API 进行身份验证

使用个人访问令牌对 API 进行身份验证

如果您想在个人项目中使用 GitHub REST API,可以创建个人访问令牌(Personal Access Token)。如果可能,GitHub 建议使用细粒度个人访问令牌(Fine‑grained PAT)而非传统的个人访问令牌(classic)。有关创建个人访问令牌的详细信息,请参阅 管理您的个人访问令牌

使用应用对 API 进行身份验证

如果您想以组织或其他用户的身份使用 API,GitHub 建议您使用 GitHub App。更多信息,请参阅 关于使用 GitHub App 进行身份验证

您也可以使用 OAuth 应用创建 OAuth 令牌来访问 REST API,但 GitHub 推荐使用 GitHub App,因为后者可以更细致地控制应用的访问权限。

在 GitHub Actions 工作流中对 API 进行身份验证

如果您想在 GitHub Actions 工作流中使用 API,GitHub 建议使用内置的 GITHUB_TOKEN 而不是自行创建令牌。您可以通过 permissions 键为 GITHUB_TOKEN 授予相应权限。

请注意,GITHUB_TOKEN 只能访问包含工作流的仓库内部资源。如果需要访问工作流仓库之外的资源,则必须使用个人访问令牌或 GitHub App。

更多信息,请参阅 在工作流中使用 GITHUB_TOKEN 进行身份验证

使用命令行进行身份验证

您可以通过两种方式在命令行访问 GitHub 上的仓库:HTTPS 和 SSH,它们各自拥有不同的身份验证方式。选择 HTTPS 还是 SSH 取决于您在克隆仓库时使用的远程 URL。有关选择哪种方式的详细信息,请参阅 关于远程仓库

HTTPS

即使您位于防火墙或代理之后,也可以通过 HTTPS 与 GitHub 上的所有仓库交互。

如果您使用 GitHub CLI 进行身份验证,可以使用个人访问令牌或通过网页浏览器完成身份验证。有关使用 GitHub CLI 进行身份验证的更多信息,请参阅 gh auth login

如果不使用 GitHub CLI,则必须使用个人访问令牌进行身份验证。当 Git 要求您输入密码时,输入您的个人访问令牌。您也可以使用类似 Git Credential Manager 的凭据管理器。基于密码的 Git 身份验证已被更安全的方式取代。更多信息,请参阅 管理您的个人访问令牌。每次使用 Git 对 GitHub 进行身份验证时,系统都会提示您输入凭据,除非您使用 凭据帮助程序 将其缓存。

SSH

您可以通过 SSH 与 GitHub 上的所有仓库交互,尽管防火墙和代理可能会阻止 SSH 连接。

如果使用 GitHub CLI 进行身份验证,CLI 会在您的机器上查找 SSH 公钥并提示您选择一个进行上传。如果没有找到可上传的 SSH 公钥,CLI 可以生成新的 SSH 公私钥对并将公钥上传至您在 GitHub.com 上的账户。随后,您可以使用个人访问令牌或通过浏览器完成身份验证。更多信息,请参阅 gh auth login

如果不使用 GitHub CLI,您需要在本地机器上生成 SSH 公私钥对,并将公钥添加到您在 GitHub.com 上的账户中。详细步骤请参阅 生成新的 SSH 密钥并将其添加到 ssh-agent。每次使用 Git 对 GitHub 进行身份验证时,系统都会提示您输入 SSH 密钥的密码短语,除非您已 将密钥存储起来

为 SAML 单点登录授权

若要使用个人访问令牌或 SSH 密钥访问使用 SAML 单点登录的组织资源,您还必须对该令牌或密钥进行授权。更多信息,请参阅 GitHub Enterprise Cloud 文档中的 为单点登录授权个人访问令牌为单点登录授权 SSH 密钥

GitHub 的令牌格式

GitHub 发行的令牌均带有前缀,以指示令牌类型。

令牌类型前缀更多信息
个人访问令牌(classic)ghp_管理您的个人访问令牌
细粒度个人访问令牌github_pat_管理您的个人访问令牌
OAuth 访问令牌gho_授权 OAuth 应用
GitHub App 的用户访问令牌ghu_代表用户使用 GitHub 应用进行身份验证
GitHub App 的安装访问令牌ghs_以 GitHub 应用安装身份进行身份验证
GitHub App 的刷新令牌ghr_刷新用户访问令牌

有关 GitHub 令牌类型及其管理的更多信息,请参阅 GitHub 凭据类型参考

© . This site is unofficial and not affiliated with GitHub, Inc.