Skip to main content

关于向 GitHub 验证

您可以根据身份验证位置使用不同的凭据,向 GitHub 验证来安全地访问帐户的资源。

关于 GitHub 向验证身份

为确保帐户安全,必须先进行身份验证,然后才能访问 GitHub 上的某些资源。 向 GitHub 验证时,您提供或确认您唯一的凭据,以证明您就是声明者。

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

  • 使用双因素身份验证的用户名和密码或密钥
  • Personal access token
  • SSH 密钥

在浏览器中进行身份验证

如果你是 具有托管用户的企业 的成员,你将使用 IdP 在浏览器中向 GitHub 进行身份验证。 有关详细信息,请参阅 GitHub Enterprise Cloud 文档中的“关于 Enterprise Managed Users”。

如果不是 具有托管用户的企业 的成员,你将使用 GitHub 用户名和密码或密钥进行身份验证。 还可以使用双因素身份验证和 SAML 单一登录,组织和企业所有者可能需要这一点。

**注意:**自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双因素身份验证 (2FA)。 如果你属于符合条件的组,当选择该组进行注册时,将收到一封通知电子邮件,该电子邮件标志着 45 天的 2FA 注册期开始,并且你会看到要求在 GitHub.com 上注册 2FA 的横幅。 如果没有收到通知,则表示你属于需要启用 2FA 的组,但我们强烈建议启用 2FA。

有关 2FA 注册推出的详细信息,请参阅此博客文章

如果需要在 GitHub.com 上使用多个帐户(例如个人帐户和服务帐户),你可以在帐户之间快速切换,而不需要每次都重新验证。 有关详细信息,请参阅“在帐户之间切换”。

  • 仅用户名和密码

    • 在 GitHub 上创建帐户时,你将创建一个密码。 我们建议您使用密码管理器生成随机且唯一的密码。 有关详细信息,请参阅“创建强密码”。
    • 如果未启用 2FA,GitHub 将在首次从新设备或未识别设备(例如新浏览器配置文件、已删除 Cookie 的浏览器或新计算机)登录时请求其他验证。 有关详细信息,请参阅“登录时验证新设备”。
  • 双因素身份验证 (2FA) (推荐)

    • 如果你启用 2FA,则在成功输入用户名和密码后,我们还将提示你提供基于时间的一次性密码 (TOTP) 应用程序在移动设备上生成的代码或以短信 (SMS) 形式发送的代码。

    • 当你配置 2FA 后,帐户将进入 28 天的检查期。 你可以通过在这 28 天内成功执行 2FA 来脱离检查期。 如果不在该时间范围内执行 2FA,系统将要求你在现有 GitHub 会话之一内执行 2FA。

    • 如果你无法执行 2FA 以通过第 28 天的检查,系统将提供一个快捷方式,让你重新配置 2FA 设置。 必须重新配置设置,然后才能访问 GitHub 的其余部分。 有关详细信息,请参阅“使用双重身份验证访问 GitHub”和“配置双重身份验证”。

    • 除了使用 TOTP 应用程序或短信进行身份验证外,你还可以选择使用 WebAuthn 添加采用GitHub Mobile或安全密钥的备用身份验证方法。 有关详细信息,请参阅 “配置双重身份验证”和 “配置双重身份验证”。

      注意:如果无法使用任何恢复方法,表示已永久失去对帐户的访问权限。 但是,可以取消链接已绑定到锁定帐户的电子邮件地址。 然后,可以将已取消链接的电子邮件地址链接到新的或现有的帐户。 有关详细信息,请参阅“从锁定的帐户取消链接电子邮件地址”。

  • 密钥

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

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

会话 Cookie

GitHub 使用 Cookie 提供服务和保护 GitHub.com。 你可以在隐私/cookie 存储库中查看有关 GitHub 的 Cookie 的详细信息。

  • gist.github.com 和 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 app 创建 OAuth 标记以访问 REST API。 但 GitHub 建议改用 GitHub App。 使用 GitHub Apps 可以更好地控制应用拥有的访问权限和权限。

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

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

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

有关详细信息,请参阅“自动令牌身份验证”。

使用命令行进行身份验证

您可以通过两种方式从命令行访问 GitHub 上的仓库:HTTPS 和 SSH ,两者采用不同的身份验证。 验证方法取决于克隆仓库时您是选择 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 验证时,系统都会提示你输入凭据以向 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 密钥。 有关详细信息,请参阅 GitHub Enterprise Cloud 文档中的“授权用于 SAML 单点登录的个人访问令牌”或“授权用于 SAML 单点登录的 SSH 密钥”。

GitHub 的令牌格式

以前缀开头的 GitHub 议题令牌表示令牌的类型。

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