关于 GitHub 身份验证
为了保证你的帐户安全,在访问 GitHub 上的某些资源之前,你必须进行身份验证。当你向 GitHub 进行身份验证时,你提供或确认了对你来说独一无二的凭据,以证明你正是你声称的本人。
你可以通过多种方式访问 GitHub 中的资源:在浏览器中、通过 GitHub Desktop 或其他桌面应用程序、使用 API 或通过命令行。每种访问 GitHub 的方式都支持不同的身份验证模式。
- 用户名和密码,采用双重身份验证或密钥
- 个人访问令牌
- SSH 密钥
在浏览器中进行身份验证
如果你属于拥有受管理用户的企业,你将使用 IdP 在浏览器中向 GitHub 进行身份验证。有关更多信息,请参阅 GitHub Enterprise Cloud 文档中的“关于企业受管理用户”。
如果您不属于拥有受管理用户的企业,您将使用 GitHub.com 用户名和密码或通行密钥进行身份验证。您还可以使用双重身份验证和 SAML 单点登录,而这可能是组织和企业所有者要求的。
注意:从 2023 年 3 月开始到 2023 年底,GitHub 将逐渐开始要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双重身份验证 (2FA)。如果您属于合格组,当该组被选中进行注册时,您将收到一封通知电子邮件,这标志着 45 天 2FA 注册期的开始,并且您将看到横幅要求您在 GitHub.com 上注册 2FA。如果您没有收到通知,则您不属于需要启用 2FA 的组,尽管我们强烈建议您这样做。
有关 2FA 注册推出的更多信息,请参阅此博客文章。
如果您需要在 GitHub.com 上使用多个帐户,例如个人帐户和服务帐户,您可以快速在您的帐户之间切换,而无需每次都重新进行身份验证。有关更多信息,请参阅“在帐户之间切换”。
-
仅限用户名和密码
-
当您在 GitHub 上创建帐户时,您将创建密码。我们建议您使用密码管理器生成随机且唯一的密码。有关更多信息,请参阅“创建强密码”。
-
如果您尚未启用 2FA,GitHub 将在您首次从无法识别的设备(例如新的浏览器个人资料、已删除 cookie 的浏览器或新计算机)登录时要求进行其他验证。
在提供您的用户名和密码后,系统将要求您提供我们通过电子邮件发送给您的验证码。如果您已安装 GitHub 移动应用程序,您将收到通知。有关更多信息,请参阅“GitHub 移动版”。
-
-
双重身份验证 (2FA)(推荐)
-
如果您启用 2FA,在您成功输入用户名和密码后,我们还将提示您提供由移动设备上的基于时间的一次性密码 (TOTP) 应用程序生成或作为短信 (SMS) 发送的代码。
-
配置 2FA 后,您的帐户将进入为期 28 天的检查期。您可以在 28 天内成功执行 2FA 以离开检查期。如果您未在该时间范围内执行 2FA,系统会要求您在现有 GitHub.com 会话之一中执行 2FA。
-
如果您无法执行 2FA 以通过第 28 天的检查,系统会提供一个快捷方式,让您重新配置 2FA 设置。您必须重新配置设置才能访问 GitHub 的其余部分。有关更多信息,请参阅“使用双重身份验证访问 GitHub”和“配置双重身份验证”。
-
除了使用 TOTP 应用程序或短信进行身份验证之外,您还可以选择使用 GitHub Mobile 或使用 WebAuthn 的安全密钥添加替代身份验证方法。有关更多信息,请参阅“使用 GitHub Mobile 配置双重身份验证”和“使用安全密钥配置双重身份验证”。
注意:如果您无法使用任何恢复方法,您将永久失去对帐户的访问权限。但是,您可以取消链接与锁定帐户关联的电子邮件地址。取消链接的电子邮件地址随后可以链接到新帐户或现有帐户。有关更多信息,请参阅“取消链接锁定帐户的电子邮件地址”。
-
-
通行密钥(选择加入测试版)
-
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-agent”。每次您使用 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_ | “刷新用户访问令牌” |