跳至主要内容

管理您的个人访问令牌

在命令行或使用 API 对 GitHub 进行身份验证时,您可以使用个人访问令牌代替密码。

警告

请像对待密码一样对待您的访问令牌。有关更多信息,请参阅“保持个人访问令牌安全”。

关于个人访问令牌

当使用GitHub API命令行时,个人访问令牌是使用密码进行 GitHub 身份验证的替代方法。

个人访问令牌旨在代表您自己访问 GitHub 资源。要代表组织访问资源,或用于长期集成的用途,您应该使用 GitHub 应用。有关更多信息,请参阅“关于创建 GitHub 应用”。

令牌具有与令牌所有者相同的访问资源和对这些资源执行操作的功能,并进一步受到授予令牌的任何范围或权限的限制。令牌无法向用户授予额外的访问权限。例如,个人访问令牌可以配置为具有 `admin:org` 范围,但是如果令牌所有者不是组织所有者,则该令牌不会授予对组织的管理访问权限。

个人访问令牌类型

GitHub 目前支持两种类型的个人访问令牌:细粒度个人访问令牌和个人访问令牌(经典版)。GitHub 建议您尽可能使用细粒度个人访问令牌,而不是个人访问令牌(经典版)。

细粒度个人访问令牌和个人访问令牌(经典版)都与生成它们的使用者绑定,如果使用者失去对资源的访问权限,它们将失效。

组织所有者可以设置策略以限制个人访问令牌(经典版)对其组织的访问权限。有关更多信息,请参阅“为您的组织设置个人访问令牌策略”。

细粒度个人访问令牌

细粒度个人访问令牌比个人访问令牌(经典版)具有多项安全优势。

  • 每个令牌只能访问单个用户或组织拥有的资源。
  • 每个令牌只能访问特定存储库。
  • 每个令牌都授予特定的权限,这比授予个人访问令牌(经典版)的范围提供了更好的控制。
  • 组织所有者可以要求批准任何可以访问组织中资源的细粒度个人访问令牌。

个人访问令牌(经典版)

个人访问令牌(经典版)安全性较低。但是,某些功能目前仅适用于个人访问令牌(经典版)。

  • 只有个人访问令牌(经典版)对您或您不是成员的组织不拥有的公共存储库具有写入权限。
  • 外部协作者只能使用个人访问令牌(经典版)访问他们作为协作者参与的组织存储库。
  • 一些 REST API 端点仅适用于个人访问令牌(经典版)。要检查端点是否也支持细粒度个人访问令牌,请参阅该端点的文档,或参阅“细粒度个人访问令牌可用的端点”。

如果您选择使用个人访问令牌(经典版),请记住它将授予访问您有权访问的所有组织中的所有存储库以及您个人帐户中的所有个人存储库的权限。

作为安全预防措施,GitHub 会自动删除一年未使用过的个人访问令牌。为了提供额外的安全性,我们强烈建议您为个人访问令牌添加过期时间。

保持个人访问令牌安全

个人访问令牌就像密码一样,它们具有相同的固有安全风险。在创建新的个人访问令牌之前,请考虑您是否有更安全的身份验证方法可用。

  • 要从命令行访问 GitHub,您可以使用GitHub CLIGit Credential Manager,而不是创建个人访问令牌。
  • 在 GitHub Actions 工作流中使用个人访问令牌时,请考虑是否可以使用内置的 `GITHUB_TOKEN`。有关更多信息,请参阅“自动令牌身份验证”。

如果这些选项不可用,并且您必须创建个人访问令牌,请考虑使用其他 CLI 服务安全地存储您的令牌。

在脚本中使用个人访问令牌时,您可以将令牌存储为密钥,然后通过 GitHub Actions 运行脚本。有关更多信息,请参阅“在 GitHub Actions 中使用密钥”。您也可以将令牌存储为 Codespaces 密钥,并在 Codespaces 中运行脚本。有关更多信息,请参阅“管理 GitHub Codespaces 的帐户特定密钥”。

有关最佳实践的更多信息,请参阅“保护您的 API 密钥”。

创建细粒度个人访问令牌

注意

细粒度个人访问令牌目前处于公开预览阶段,可能会发生更改。要留下反馈,请参阅反馈讨论

  1. 如果您的邮箱地址尚未验证,请验证您的邮箱地址

  2. 在 GitHub 上任何页面的右上角,点击您的个人资料照片,然后点击 设置.

  3. 在左侧边栏中,点击 开发者设置

  4. 在左侧边栏中,在 个人访问令牌下,点击细粒度令牌

  5. 点击生成新令牌

  6. 令牌名称下,输入令牌的名称。

  7. 过期时间下,选择令牌的过期时间。允许无限期使用,但可能会受到组织或企业所有者设置的最长有效期策略的限制。有关更多信息,请参阅“强制执行个人访问令牌的最长有效期策略”。

  8. 您也可以在说明下添加注释来描述令牌的用途。

  9. 资源所有者下,选择一个资源所有者。该令牌只能访问所选资源所有者拥有的资源。除非组织选择加入细粒度个人访问令牌,否则您所属的组织将不会显示。有关更多信息,请参阅“为您的组织设置个人访问令牌策略”。

  10. 如果资源所有者是需要批准细粒度个人访问令牌的组织,则可以在资源所有者下方的框中输入请求理由。

  11. 仓库访问权限下,选择您希望令牌访问哪些仓库。您应该选择满足您需求的最小仓库访问权限。令牌始终包含对 GitHub 上所有公共仓库的只读访问权限。

  12. 如果您在上一步中选择了仅选择仓库,则在已选择仓库下拉菜单下,选择您希望令牌访问的仓库。

  13. 权限下,选择要授予令牌的权限。根据您指定的资源所有者和仓库访问权限,存在仓库、组织和帐户权限。您应该选择满足您需求的最小权限。

    每个端点的 REST API 参考文档都说明了该端点是否与细粒度个人访问令牌一起使用,以及令牌使用该端点所需的权限。某些端点可能需要多个权限,而某些端点可能需要多个权限中的一个。有关细粒度个人访问令牌可以使用每个权限访问哪些 REST API 端点的概述,请参阅“细粒度个人访问令牌所需的权限”。

  14. 点击生成令牌

如果您选择了一个组织作为资源所有者,并且该组织需要批准细粒度个人访问令牌,则您的令牌将被标记为pending,直到组织管理员对其进行审核。在批准之前,您的令牌只能读取公共资源。如果您是组织的所有者,您的请求将自动批准。有关更多信息,请参阅“审核和撤销组织中的个人访问令牌”。

创建个人访问令牌(经典版)

注意

组织所有者可以限制个人访问令牌(经典版)对其组织的访问。如果您尝试使用个人访问令牌(经典版)访问已禁用个人访问令牌(经典版)访问权限的组织中的资源,则您的请求将失败并返回 403 响应。您必须改用 GitHub App、OAuth 应用或细粒度个人访问令牌。

警告

您的个人访问令牌(经典版)可以访问您可以访问的每个仓库。GitHub 建议您改用细粒度个人访问令牌,您可以将其限制为特定仓库。细粒度个人访问令牌还允许您指定细粒度权限,而不是广泛的范围。

  1. 如果您的邮箱地址尚未验证,请验证您的邮箱地址

  2. 在 GitHub 上任何页面的右上角,点击您的个人资料照片,然后点击 设置.

  3. 在左侧边栏中,点击 开发者设置

  4. 在左侧边栏中,在 个人访问令牌下,点击令牌(经典版)

  5. 选择生成新令牌,然后点击生成新令牌(经典版)

  6. 在“备注”字段中,为您的令牌指定一个描述性名称。

  7. 要为令牌设置过期时间,请选择过期时间,然后选择默认选项或点击自定义输入日期。

  8. 选择您想要授予此令牌的范围。要使用您的令牌从命令行访问仓库,请选择repo。没有分配范围的令牌只能访问公共信息。有关更多信息,请参阅“OAuth 应用的范围”。

  9. 点击生成令牌

  10. 您也可以选择点击以下按钮将新令牌复制到剪贴板:.

    Screenshot of the "Personal access tokens" page. Next to a blurred-out token, an icon of two overlapping squares is outlined in orange.

  11. 要使用您的令牌访问使用 SAML 单点登录的组织拥有的资源,请授权令牌。有关更多信息,请参阅 GitHub Enterprise Cloud 文档中的“授权个人访问令牌以与 SAML 单点登录一起使用”。

删除个人访问令牌

如果不再需要个人访问令牌,则应将其删除。如果您删除了用于创建部署密钥的个人访问令牌,则部署密钥也将被删除。

  1. 在 GitHub 上任何页面的右上角,点击您的个人资料照片,然后点击 设置.
  2. 在左侧边栏中,点击 开发者设置
  3. 在左侧边栏中,在 个人访问令牌下,点击细粒度令牌令牌(经典版),具体取决于您要删除的个人访问令牌类型。
  4. 在您要删除的个人访问令牌右侧,点击删除

在命令行上使用个人访问令牌

获得个人访问令牌后,您可以在执行 HTTPS 上的 Git 操作时输入它来代替密码。

例如,要在命令行上克隆仓库,您需要输入以下git clone命令。然后系统会提示您输入用户名和密码。当系统提示您输入密码时,输入您的个人访问令牌而不是密码。

$ git clone https://github.com/USERNAME/REPO.git
Username: YOUR-USERNAME
Password: YOUR-PERSONAL-ACCESS-TOKEN

个人访问令牌只能用于 HTTPS Git 操作。如果您的仓库使用 SSH 远程 URL,则需要将远程 URL 从 SSH 切换到 HTTPS

如果您没有被提示输入用户名和密码,您的凭据可能缓存在您的计算机上。您可以更新密钥链中的凭据以将旧密码替换为令牌。

无需每次 HTTPS Git 操作都手动输入您的个人访问令牌,您可以使用 Git 客户端缓存您的个人访问令牌。Git 会将您的凭据临时存储在内存中,直到过期时间间隔过去。您也可以将令牌存储在 Git 每次请求前都可以读取的纯文本文件中。更多信息,请参阅“在 Git 中缓存您的 GitHub 凭据”。

进一步阅读