Skip to main content

关于 GitHub 的身份验证

可以通过对 GitHub 进行身份验证,从而安全地访问帐户的资源,并根据身份验证的位置使用不同的凭据。

到GitHub 的身份验证

若要保护帐户安全,必须先进行身份验证,然后才能访问某些资源 GitHub。 当你在GitHub进行身份验证时,你提供或确认专属于你的凭据,以证明你确实就是你所宣称的身份。

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

  • 标识提供者(IdP)
  • 用户名和密码(或社交登录)与双重身份验证,或仅使用通行密钥(GitHub Free,和 GitHub Enterprise Cloud)
  • Personal access token
  • SSH 密钥

在浏览器中进行身份验证

你可以通过多种方式在浏览器中对 GitHub 进行身份验证。

如果需要使用 你的 GitHub Enterprise Server 实例多个帐户(例如个人帐户和服务帐户),则可以在帐户之间快速切换,而无需始终每次重新进行身份验证。 有关详细信息,请参阅“在帐户之间切换”。

  • 仅用户名和密码

    • 在创建帐户 GitHub时,你将创建密码。 我们建议你使用密码管理器生成随机且唯一的密码。 有关详细信息,请参阅 创建强密码
  • 双因素身份验证 (2FA)(推荐)

    • 如果在使用社交登录名或用户名和密码登录后启用双重身份验证(2FA),系统会提示你从移动设备。 有关详细信息,请参阅 使用双重身份验证访问GitHub

    • 除了使用 TOTP 应用程序进行身份验证之外,还可以选择使用 WebAuthn 添加身份验证的替代方法 安全密钥。 请参阅 配置双重身份验证

  • 通行密钥

    • 你可以向帐户添加密钥,以启用安全的无密码登录。 密钥同时满足密码和 2FA 要求,因此只需一个步骤即可完成登录。 请参阅“关于密钥”。
  • 外部身份验证

    • 站点管理员可配置 你的 GitHub Enterprise Server 实例 为使用外部身份验证,而不是用户名和密码。 有关详细信息,请参阅 标识和访问管理基础知识

会话 Cookie

GitHub 使用 Cookie 提供服务并提高安全性。

  • gist。github.com HOSTNAME 域和的 github.com 域基域使用单独的 Cookie。
  • GitHub 通常,在两周处于非活动状态后,将用户会话标记为删除。
  • GitHub 注销时不会立即删除会话。定期自动 GitHub 删除过期的会话。

认证 GitHub Desktop

可以使用GitHub Desktop通过浏览器进行身份验证。 有关详细信息,请参阅“在 GitHub Desktop 中向 GitHub 进行身份验证”。

使用 API 验证身份

你可以通过不同方式使用 API 进行身份验证。 有关详细信息,请参阅“对 REST API 进行身份验证”。

使用personal access token 进行 API 验证

如果要使用 GitHub REST API 进行个人使用,可以创建一个 personal access token。 如果可能,GitHub建议您使用fine-grained personal access token而不是personal access token (classic)。 有关创建personal access token的详细信息,请参阅管理个人访问令牌

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

如果要代表组织或其他用户使用 API, GitHub 建议使用 GitHub App。 有关详细信息,请参阅“关于使用 GitHub 应用进行身份验证”。

还可以创建一个 OAuth 令牌,以便通过 OAuth app 访问 REST API。 但是,GitHub建议您使用GitHub App代替。 GitHub Apps 允许对应用的访问和权限进行更多控制。

对 API 进行身份验证是在 GitHub Actions 工作流中的一部分

如果要在工作流中使用 GitHub Actions API, GitHub 建议使用内置 GITHUB_TOKEN 身份验证,而不是创建令牌。 可以使用 GITHUB_TOKEN 密钥向 permissions 授予权限。

请注意,GITHUB_TOKEN 只能访问包含工作流的存储库中的资源。 如果需要更改工作流存储库外部的资源,则需要使用 personal access token 或 GitHub App。

有关详细信息,请参阅“在工作流中使用 GITHUB_TOKEN 进行身份验证”。

使用命令行进行身份验证

可以通过两种方式(HTTPS 和 SSH)从命令行访问存储库 GitHub ,并且两者都具有不同的身份验证方式。 验证方法取决于克隆存储库时你是选择 HTTPS 还是 SSH 远程 URL。 有关访问方式的详细信息,请参阅“关于远程仓库”。

HTTPS

即使位于防火墙或代理后面,也可以通过 HTTPS 处理所有存储库 GitHub 。

如果您使用 GitHub CLI 进行身份验证,可以使用 personal access token 或通过 Web 浏览器进行身份验证。 有关使用 GitHub CLI身份验证的详细信息,请参阅 gh auth login

如果未进行GitHub CLI身份验证,你必须使用可以使用其可用性取决于 IdP 的身份验证方法。

该表根据为你的实例配置的 IdP 列出了可用的身份验证方法。 不同的 IdP 可能会施加特定限制或启用某些功能,例如禁用密码身份验证。 有关详细信息,请参阅“标识和访问管理”。

IdP可用身份验证方法详细信息
SAMLPersonal access token密码身份验证已禁用
LDAP
Personal access token 或用户名/密码站点管理员可以禁用密码身份验证
内置身份验证
Personal access token 或用户名/密码无法禁用密码身份验证

SSH

可以通过 SSH 处理所有存储库 GitHub ,尽管防火墙和代理可能拒绝允许 SSH 连接。

如果进行身份验证 GitHub CLI,CLI 将在计算机上找到 SSH 公钥,并提示你选择一个进行上传。 如果GitHub CLI找不到用于上传的 SSH 公钥,它可以生成新的 SSH 公钥/私钥对,并将公钥上传到帐户。你的 GitHub Enterprise Server 实例 然后,您可以通过 personal access token 或 Web 浏览器进行身份验证。 有关使用 GitHub CLI身份验证的详细信息,请参阅 gh auth login

如果在GitHub CLI未进行身份验证的情况下进行操作,您需要在本地计算机上生成一个 SSH 公钥/私钥对,并将公钥添加到你的 GitHub Enterprise Server 实例上的您的帐户中。 有关详细信息,请参阅“生成新的 SSH 密钥并将其添加到 ssh-agent”。 每次使用 Git 进行身份验证 GitHub时,系统都会提示输入 SSH 密钥通行短语,除非 已存储密钥

GitHub的令牌格式

GitHub 颁发以前缀开头的令牌,以指示令牌的类型。

注意

自 2026 年 4 月 27 日起,GitHub 开始分阶段向所有新签发的 GitHub App 安装令牌推出一种无状态格式(ghs_APPID_JWT),从而提升其性能,并提高我们 API 接口的可靠性。 如果应用程序需要或依赖于安装令牌的长度正好为 40 个字符,则可能无法正确处理此新令牌格式。 现在,可以使用临时请求标头来验证应用和工作流,以便按需启用令牌格式。 有关临时标头的详细信息,请参阅GitHub博客

令牌类型Prefix详细信息
Personal access token (classic)ghp_
管理个人访问令牌
Fine-grained personal access tokengithub_pat_
管理个人访问令牌
OAuth 访问令牌gho_
授权 OAuth 应用
用户访问令牌 GitHub Appghu_
代表用户使用 GitHub 应用进行身份验证
用于安装的访问令牌 GitHub Appghs_
验证为 GitHub 应用程序安装
刷新令牌 GitHub Appghr_
刷新用户访问令牌

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