跳至主要内容

管理您的个人访问令牌

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

警告:将您的访问令牌视为密码。有关更多信息,请参阅“保护您的个人访问令牌安全”。

关于个人访问令牌

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

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

个人访问令牌的类型

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 应用、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

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

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

进一步阅读