警告:将您的访问令牌视为密码。
要从命令行访问 GitHub,请考虑使用 GitHub CLI 或Git Credential Manager而不是创建个人访问令牌。
在脚本中使用个人访问令牌时,请考虑将您的令牌存储为秘密并通过 GitHub Actions 运行您的脚本。有关详细信息,请参阅“加密的秘密”。您还可以将您的令牌存储为 Codespaces 秘密并在 Codespaces 中运行您的脚本。有关详细信息,请参阅“管理代码空间的加密机密”。
如果这些选项不可行,请考虑使用其他服务(例如1Password CLI)来安全地存储您的令牌。
关于个人访问令牌
在使用GitHub API或命令行时,个人访问令牌是使用密码对 GitHub 进行身份验证的替代方法。个人访问令牌旨在代表您访问 GitHub 资源。要代表组织访问资源或进行长期集成,您应该使用 GitHub 应用程序。有关详细信息,请参阅“关于应用程序”。
GitHub 目前支持两种类型的个人访问令牌:细粒度个人访问令牌和个人访问令牌(经典)。GitHub 建议您尽可能使用细粒度个人访问令牌而不是个人访问令牌(经典)。与个人访问令牌(经典)相比,细粒度个人访问令牌具有几个安全优势:
- 每个令牌只能访问单个用户或组织拥有的资源。
- 每个令牌只能访问特定的存储库。
- 每个令牌都被授予特定权限,这比授予个人访问令牌(经典)的范围提供更多控制。
- 每个令牌都必须有一个到期日期。
- 组织所有者可以要求批准任何可以访问组织资源的细粒度个人访问令牌。
此外,组织所有者可以限制个人访问令牌(经典)对其组织的访问。
注意:目前,某些功能仅适用于个人访问令牌(经典):
- 只有个人访问令牌(经典)对不属于您或您不是其成员的组织拥有的公共存储库具有写入权限。
- 外部协作者只能使用个人访问令牌(经典)来访问他们作为协作者的组织存储库。
- 以下 API 仅支持个人访问令牌(经典)。有关细粒度个人访问令牌支持的 REST API 操作列表,请参阅“细粒度个人访问令牌可用的端点”。
- GraphQL API
- 用于管理源导入的 REST API
- 用于管理项目的 REST API(经典)
- 用于管理 GitHub 包的 REST API
- 用于管理通知的 REST API
- 用于传输存储库的 REST API
- 用于从模板创建存储库的 REST API
- 用于为经过身份验证的用户创建存储库的 REST API
作为安全预防措施,GitHub 会自动删除一年内未使用的个人访问令牌。为了提供额外的安全性,我们强烈建议为您的个人访问令牌添加到期时间。
创建细粒度的个人访问令牌
注意:细粒度个人访问令牌目前处于测试阶段,可能会发生变化。要留下反馈,请参阅反馈讨论。
验证您的电子邮件地址(如果尚未验证)。
在任意页面的右上角,点击您的个人资料照片,然后点击设置。
在左侧边栏中,单击Developer settings。
在左侧边栏中,在Personal access tokens下,单击Fine-grained tokens。
单击生成新令牌。
在令牌名称下,输入令牌的名称。
在Expiration下,选择令牌的到期时间。
或者,在Description下,添加注释以描述令牌的用途。
在Resource owner下,选择一个资源所有者。令牌将只能访问选定资源所有者拥有的资源。您所属的组织不会出现,除非该组织选择了细粒度的个人访问令牌。有关详细信息,请参阅“为您的组织设置个人访问令牌策略”。
或者,如果资源所有者是需要批准细粒度个人访问令牌的组织,请在资源所有者下方的框中输入请求的理由。
在Repository access下,选择您希望令牌访问的存储库。您应该选择满足您需要的最小存储库访问权限。令牌始终包括对 GitHub 上所有公共存储库的只读访问权限。
如果您在上一步中选择了仅选择存储库,则在选定存储库下拉列表下,选择您希望令牌访问的存储库。
在Permissions下,选择要授予令牌的权限。根据您指定的资源所有者和存储库访问权限,存在存储库、组织和帐户权限。您应该选择满足您需要的最小权限。有关每个 REST API 操作所需权限的更多信息,请参阅“细粒度个人访问令牌所需的权限”。
单击生成令牌。
如果您选择一个组织作为资源所有者,并且该组织需要批准细粒度的个人访问令牌,那么您的令牌将被标记为pending
直到由组织管理员审查。在获得批准之前,您的令牌将只能读取公共资源。如果您是组织的所有者,您的请求将自动获得批准。有关详细信息,请参阅“查看和撤销组织中的个人访问令牌”。
创建个人访问令牌(经典)
注意:组织所有者可以限制个人访问令牌(经典)对其组织的访问。如果您尝试使用个人访问令牌(经典)访问已禁用个人访问令牌(经典)访问的组织中的资源,您的请求将失败并返回 403 响应。相反,您必须使用 GitHub 应用程序、OAuth 应用程序或细粒度的个人访问令牌。
注意:您的个人访问令牌(经典)可以访问您可以访问的每个存储库。GitHub 建议您改为使用细粒度的个人访问令牌,您可以将其限制为特定的存储库。细粒度的个人访问令牌还使您能够指定细粒度的权限而不是广泛的范围。
验证您的电子邮件地址(如果尚未验证)。
在任意页面的右上角,点击您的个人资料照片,然后点击设置。
在左侧边栏中,单击Developer settings。
在左侧边栏中的Personal access tokens下,单击Tokens (classic)。
选择Generate new token,然后点击Generate new token (classic)。
为您的令牌指定一个描述性名称。
要让您的令牌过期,请选择“过期”下拉菜单,然后单击默认值或使用日历选择器。
选择您要授予此令牌的范围。要使用您的令牌从命令行访问存储库,请选择repo。没有分配范围的令牌只能访问公共信息。有关详细信息,请参阅“OAuth 应用程序的范围”。
单击生成令牌。
要使用您的令牌访问使用 SAML 单点登录的组织所拥有的资源,请授权该令牌。有关更多信息,请参阅GitHub Enterprise Cloud 文档中的“授权个人访问令牌以用于 SAML 单点登录”。
在命令行上使用令牌
拥有令牌后,您可以在通过 HTTPS 执行 Git 操作时输入它而不是密码。
例如,在命令行中您将输入以下内容:
$ git clone https://github.com/USERNAME/REPO.git
Username: YOUR_USERNAME
Password: YOUR_TOKEN
个人访问令牌只能用于 HTTPS Git 操作。如果您的存储库使用 SSH 远程 URL,则需要将远程从 SSH 切换到 HTTPS。
如果系统未提示您输入用户名和密码,则您的凭据可能缓存在您的计算机上。您可以在钥匙串中更新您的凭据,以用令牌替换旧密码。
您可以使用 Git 客户端缓存您的个人访问令牌,而不是为每个 HTTPS Git 操作手动输入您的个人访问令牌。Git 会暂时将您的凭据存储在内存中,直到过期时间间隔过去。您还可以将令牌存储在 Git 可以在每次请求之前读取的纯文本文件中。有关详细信息,请参阅“在 Git 中缓存您的 GitHub 凭据”。
延伸阅读
- 《关于 GitHub 的认证》
- “令牌过期和撤销”