关于 GitHub 身份验证
为了确保帐户安全,您必须先进行身份验证才能访问 GitHub 上的某些资源。当您对 GitHub 进行身份验证时,您会提供或确认对您唯一的凭据,以证明您确实是您声称的那个人。
您可以通过多种方式访问 GitHub 中的资源:在浏览器中、通过 GitHub Desktop 或其他桌面应用程序、使用 API 或通过命令行。每种访问 GitHub 的方式都支持不同的身份验证模式。
- 用户名和密码以及双因素身份验证或密钥
- 个人访问令牌
- SSH 密钥
在浏览器中进行身份验证
如果您是具有托管用户的企业的成员,您将在浏览器中使用您的 IdP 对 GitHub 进行身份验证。有关更多信息,请参阅 GitHub Enterprise Cloud 文档中的“关于企业托管用户”。
如果您不是具有托管用户的企业的成员,您将使用您的 GitHub 用户名和密码或密钥进行身份验证。您也可以使用双因素身份验证和 SAML 单点登录,组织和企业所有者可能要求使用这些功能。
注意
截至 2023 年 3 月,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种双因素身份验证 (2FA) 形式。如果您属于符合条件的组,当该组被选中参加注册时,您将收到一封通知电子邮件,标志着 45 天 2FA 注册期的开始,并且您会在 GitHub.com 上看到提示您注册 2FA 的横幅。如果您没有收到通知,则表示您不属于需要启用 2FA 的组,尽管我们强烈建议您这样做。
有关 2FA 注册推出计划的更多信息,请参阅此博文。
如果您需要在 GitHub.com 上使用多个帐户,例如个人帐户和服务帐户,您可以快速在帐户之间切换,而无需每次都重新进行身份验证。有关更多信息,请参阅“在帐户之间切换”。
-
仅用户名和密码
-
**双因素身份验证 (2FA)**(推荐)
-
如果您启用 2FA,在您成功输入用户名和密码后,我们还会提示您提供由您移动设备上的基于时间的一次性密码 (TOTP) 应用程序生成的代码或作为短信 (SMS) 发送的代码。
-
配置 2FA 后,您的帐户将进入为期 28 天的检查期。您可以在 28 天内成功执行 2FA 以离开检查期。如果您在此时间段内未执行 2FA,则系统会要求您在现有 GitHub 会话之一中执行 2FA。
-
如果您无法执行 2FA 以通过第 28 天的检查,系统将为您提供一个快捷方式,让您重新配置 2FA 设置。您必须在访问 GitHub 的其余部分之前重新配置您的设置。有关更多信息,请参阅“使用双因素身份验证访问 GitHub”和“配置双因素身份验证”。
-
除了使用 TOTP 应用程序或短信进行身份验证外,您还可以选择使用 GitHub Mobile 或使用 WebAuthn 的安全密钥添加其他身份验证方法。有关更多信息,请参阅“配置双因素身份验证”和“配置双因素身份验证”。
注意
如果您无法使用任何恢复方法,则表示您已永久丢失对帐户的访问权限。但是,您可以取消链接与锁定帐户关联的电子邮件地址。然后,可以将取消链接的电子邮件地址链接到新的或现有的帐户。有关更多信息,请参阅“取消链接与锁定帐户关联的电子邮件地址”。
-
-
密钥
- 您可以为您的帐户添加一个访问密钥,以启用安全且无需密码的登录。访问密钥同时满足密码和 2FA 要求,因此您可以一步完成登录。请参阅“关于访问密钥”。
-
SAML 单点登录
- 在您访问使用 SAML 单点登录的组织或企业帐户拥有的资源之前,您可能还需要通过 IdP 进行身份验证。有关更多信息,请参阅 GitHub Enterprise Cloud 文档中的“关于使用 SAML 单点登录进行身份验证”。
会话 Cookie
GitHub 使用 Cookie 提供服务并保护 GitHub.com 的安全。您可以在 privacy/cookies 存储库 中查看有关 GitHub Cookie 的详细信息。
- gist.github.com 和 github.com 域名使用单独的 Cookie。
- GitHub 通常会在用户闲置两周后标记会话以进行删除。
- 当您注销时,GitHub 不会立即删除会话。GitHub 会定期自动删除过期的会话。
使用 GitHub Desktop 进行身份验证
您可以使用浏览器通过 GitHub Desktop 进行身份验证。有关更多信息,请参阅“在 GitHub Desktop 中对 GitHub 进行身份验证”。
使用 API 进行身份验证
您可以通过不同的方式使用 API 进行身份验证。有关更多信息,请参阅“对 REST API 进行身份验证”。
使用个人访问令牌对 API 进行身份验证
如果您想将 GitHub REST API 用于个人用途,您可以创建一个个人访问令牌。如果可能,GitHub 建议您使用细粒度个人访问令牌,而不是个人访问令牌(经典版)。有关创建个人访问令牌的更多信息,请参阅“管理您的个人访问令牌”。
使用应用对 API 进行身份验证
如果您想代表组织或其他用户使用 API,GitHub 建议您使用 GitHub 应用。有关更多信息,请参阅“关于使用 GitHub 应用进行身份验证”。
您还可以使用 OAuth 应用创建 OAuth 令牌来访问 REST API。但是,GitHub 建议您改为使用 GitHub 应用。GitHub 应用允许您更好地控制应用的访问权限和许可权。
在 GitHub Actions 工作流中对 API 进行身份验证
如果您想在 GitHub Actions 工作流中使用 API,GitHub 建议您使用内置的 GITHUB_TOKEN
进行身份验证,而不是创建令牌。您可以使用 permissions
键向 GITHUB_TOKEN
授予权限。
请注意,GITHUB_TOKEN
只能访问包含工作流的存储库中的资源。如果您需要对工作流存储库外部的资源进行更改,则需要使用个人访问令牌或 GitHub 应用。
有关更多信息,请参阅“自动令牌身份验证”。
使用命令行进行身份验证
您可以通过两种方式从命令行访问 GitHub 上的存储库:HTTPS 和 SSH,并且两者都有不同的身份验证方式。身份验证方法取决于您在克隆存储库时选择 HTTPS 还是 SSH 远程 URL。有关访问方式的更多信息,请参阅“关于远程存储库”。
HTTPS
您可以通过 HTTPS 使用 GitHub 上的所有存储库,即使您位于防火墙或代理后面。
如果您使用 GitHub CLI 进行身份验证,则可以使用个人访问令牌或通过 Web 浏览器进行身份验证。有关使用 GitHub CLI 进行身份验证的更多信息,请参阅 gh auth login
。
如果您不使用 GitHub CLI 进行身份验证,则必须使用个人访问令牌进行身份验证。当 Git 提示您输入密码时,请输入您的个人访问令牌。或者,您可以使用像 Git Credential Manager 这样的凭据助手。基于密码的 Git 身份验证已被删除,取而代之的是更安全的身份验证方法。有关更多信息,请参阅“管理您的个人访问令牌”。每次您使用 Git 对 GitHub 进行身份验证时,系统都会提示您输入凭据以对 GitHub 进行身份验证,除非您使用 凭据助手 将其缓存。
SSH
您可以通过 SSH 使用 GitHub 上的所有存储库,尽管防火墙和代理可能会拒绝允许 SSH 连接。
如果您使用 GitHub CLI 进行身份验证,CLI 将在您的计算机上查找 SSH 公钥,并提示您选择一个进行上传。如果 GitHub CLI 未找到要上传的 SSH 公钥,它可以生成一个新的 SSH 公钥/私钥对并将公钥上传到您在 GitHub.com 上的帐户。然后,您可以使用个人访问令牌或通过 Web 浏览器进行身份验证。有关使用 GitHub CLI 进行身份验证的更多信息,请参阅 gh auth login
。
如果您不使用 GitHub CLI 进行身份验证,则需要在本地计算机上生成 SSH 公钥/私钥对,并将公钥添加到您在 GitHub.com 上的帐户。有关更多信息,请参阅“生成新的 SSH 密钥并将其添加到 ssh 代理”。每次您使用 Git 对 GitHub 进行身份验证时,系统都会提示您输入 SSH 密钥密码短语,除非您已 存储密钥。
授权 SAML 单点登录
要使用个人访问令牌或 SSH 密钥访问使用 SAML 单点登录的组织拥有的资源,您还必须授权个人令牌或 SSH 密钥。有关更多信息,请参阅 GitHub Enterprise Cloud 文档中的“授权个人访问令牌与 SAML 单点登录一起使用”或“授权 SSH 密钥与 SAML 单点登录一起使用”。
GitHub 的令牌格式
GitHub 发出的令牌以一个前缀开头,以指示令牌的类型。
令牌类型 | 前缀 | 更多信息 |
---|---|---|
个人访问令牌(经典版) | ghp_ | "管理您的个人访问令牌" |
细粒度个人访问令牌 | github_pat_ | "管理您的个人访问令牌" |
OAuth 访问令牌 | gho_ | "授权 OAuth 应用" |
GitHub 应用的用户访问令牌 | ghu_ | "代表用户使用 GitHub 应用进行身份验证" |
GitHub 应用的安装访问令牌 | ghs_ | "以 GitHub 应用安装身份进行身份验证" |
GitHub 应用的刷新令牌 | ghr_ | "刷新用户访问令牌" |