到GitHub 的身份验证
若要保护帐户安全,必须先进行身份验证,然后才能访问某些资源 GitHub。 当你在GitHub进行身份验证时,你提供或确认专属于你的凭据,以证明你确实就是你所宣称的身份。
可以通过多种方式访问资源:在浏览器中、通过GitHub或其他桌面应用程序、使用 API 或通过命令行访问资源GitHub Desktop。 每种访问 GitHub 方式都支持不同的身份验证模式。
- 标识提供者(IdP)
- 用户名和密码(或社交登录)与双重身份验证,或仅使用通行密钥(GitHub Free,和 GitHub Enterprise Cloud)
- Personal access token
- SSH 密钥
在浏览器中进行身份验证
如果你是某个 具有托管用户的企业成员,你将使用 IdP 在 GitHub 浏览器中进行身份验证。 有关详细信息,请参阅文档中的
如果你不是某个 具有托管用户的企业成员,你将使用 GitHub 用户名和密码或密钥进行身份验证。 还可以使用双因素身份验证和 SAML 单一登录,组织和企业所有者可能需要这一点。
注意
自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双因素身份验证 (2FA)。 如果你属于符合条件的组,当选择该组进行注册时,将收到一封通知电子邮件,该电子邮件标志着 45 天的 2FA 注册期开始,并且你会看到要求在 GitHub.com 上注册 2FA 的横幅。 如果没有收到通知,则表示你属于需要启用 2FA 的组,但我们强烈建议启用 2FA。
有关 2FA 注册推出的详细信息,请参阅此博客文章。
如果需要使用 GitHub.com多个帐户(例如个人帐户和服务帐户),则可以在帐户之间快速切换,而无需始终每次重新进行身份验证。 有关详细信息,请参阅“在帐户之间切换”。
-
仅用户名和密码
-
社交登录
- 在GitHub 创建帐户时,您将使用 Google 或 Apple 进行身份验证,这些是支持的社交登录提供商。 建议同时配置 2FA 并添加密钥或密码作为额外的帐户恢复机制。
- 如果已有使用密码创建的帐户,可以将社交登录电子邮件添加到该帐户。 这允许您在登录 GitHub 时将社交账户身份作为第一因素(即密码)的替代。
- 可以从电子邮件设置页面取消链接社交登录标识 GitHub 。 有关详细信息,请参阅 将电子邮件地址与被锁定的帐户解除关联
-
双因素身份验证 (2FA)(推荐)
-
如果在使用社交登录名或用户名和密码登录后启用双重身份验证(2FA),系统会提示你从移动设备 上的基于时间的一次性密码(TOTP)应用程序输入代码,或者以短信(短信)发送。
-
当你配置 2FA 后,帐户将进入 28 天的检查期。 你可以通过在这 28 天内成功执行 2FA 来脱离检查期。 如果不在该时间跨度内执行 2FA,系统会要求你在现有 GitHub 会话之一内执行 2FA。
-
如果你无法执行 2FA 以通过第 28 天的检查,系统将提供一个快捷方式,让你重新配置 2FA 设置。 必须先重新配置设置,然后才能访问其余设置 GitHub。 有关详细信息,请参阅 使用双重身份验证访问GitHub 和 配置双重身份验证。
-
除了使用 TOTP 应用程序 或短信进行身份验证之外,还可以选择使用 WebAuthn 添加身份验证的替代方法 GitHub Mobile 或 安全密钥。 请参阅 使用安全密钥配置双因素身份验证 GitHub Mobile 或 配置双重身份验证。
注意
如果无法使用任何恢复方法,表示已永久失去对帐户的访问权限。 但是,可以取消链接已绑定到锁定帐户的电子邮件地址。 然后,可以将已取消链接的电子邮件地址链接到新的或现有的帐户。 有关详细信息,请参阅“将电子邮件地址与被锁定的帐户解除关联”。
-
-
通行密钥
- 你可以向帐户添加密钥,以启用安全的无密码登录。 密钥同时满足密码和 2FA 要求,因此只需一个步骤即可完成登录。 请参阅“关于密钥”。
-
SAML 单一登录
会话 Cookie
GitHub 使用 Cookie 提供服务并提高安全性。 可以在 GitHub 中查看有关 's cookie 的详细信息。
- gist。和实例使用单独的 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身份验证,你必须使用进行personal access token身份验证。 当 Git 提示你输入密码时,请输入你的personal access token。 或者,可以使用 Git 凭据管理器等凭据帮助程序。 Git 的基于密码的身份验证已被删除,取而代之的是更安全的身份验证方法。 有关详细信息,请参阅“管理个人访问令牌”。 每次使用 Git 进行身份验证 GitHub时,系统都会提示输入凭据,除非使用 凭据帮助程序缓存凭据。
SSH
可以通过 SSH 处理所有存储库 GitHub ,尽管防火墙和代理可能拒绝允许 SSH 连接。
如果进行身份验证 GitHub CLI,CLI 将在计算机上找到 SSH 公钥,并提示你选择一个进行上传。 如果GitHub CLI找不到用于上传的 SSH 公钥,它可以生成新的 SSH 公钥/私钥对,并将公钥上传到帐户。GitHub.com 然后,您可以通过 personal access token 或 Web 浏览器进行身份验证。 有关使用 GitHub CLI身份验证的详细信息,请参阅 gh auth login。
如果在GitHub CLI未进行身份验证的情况下进行操作,您需要在本地计算机上生成一个 SSH 公钥/私钥对,并将公钥添加到GitHub.com上的您的帐户中。 有关详细信息,请参阅“生成新的 SSH 密钥并将其添加到 ssh-agent”。 每次使用 Git 进行身份验证 GitHub时,系统都会提示输入 SSH 密钥通行短语,除非 已存储密钥。
SAML 单点登录授权
若要使用 personal access token 或 SSH 密钥访问使用 SAML 单一登录的组织拥有的资源,还必须授权个人令牌或 SSH 密钥。 有关详细信息,请参阅文档中的 将 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 token | github_pat_ | |
| 管理个人访问令牌 | ||
| OAuth 访问令牌 | gho_ | |
| 授权 OAuth 应用 | ||
| 用户访问令牌 GitHub App | ghu_ | |
| 代表用户使用 GitHub 应用进行身份验证 | ||
| 用于安装的访问令牌 GitHub App | ghs_ | |
| 验证为 GitHub 应用程序安装 | ||
| 刷新令牌 GitHub App | ghr_ | |
| 刷新用户访问令牌 |
有关 GitHub 的令牌类型及其管理的详细信息,请参阅 GitHub 凭据类型参考。