GitHub Token
GitHub 令牌分类

📝 笔记总结
- 个人访问令牌(Personal Access Tokens,PATs)
- 细粒度个人访问令牌(Fine-grained PAT)
- 经典个人访问令牌(Classic PAT)
- 其他用于自动化或应用集成的令牌
- GitHub Actions 内置令牌
GITHUB_TOKEN - GitHub App 安装令牌 Installation Token
- OAuth App 访问令牌
- GitHub Actions 内置令牌
📖 内容来源
🌟 GitHub 令牌分类
GitHub 令牌主要分为两大类:个人访问令牌(Personal Access Tokens, PATs) 和其他用于自动化或应用集成的令牌。其中,个人访问令牌又分为更安全的细粒度令牌(Fine-grained PAT)和传统的经典个人访问令牌(Classic PAT)。
- 个人访问令牌(Personal Access Tokens,PATs)
- 细粒度个人访问令牌(Fine-grained PAT)
- 经典个人访问令牌(Classic PAT)
- 其他用于自动化或应用集成的令牌
- GitHub Actions 内置令牌
GITHUB_TOKEN - GitHub App 安装令牌 Installation Token
- OAuth App 访问令牌
- GitHub Actions 内置令牌
汇总 GitHub 主要令牌类型及其核心区别:
| 令牌类型 | 前缀 | 有效期 | 权限范围 | 适用场景 |
|---|---|---|---|---|
| 细粒度个人访问令牌 Fine-grained PAT |
github_pat_ |
最长1年或无到期 | 可精确到特定仓库的特定权限,如“对A仓库的contents有只读权限” | 推荐首选。适用于对安全性要求高的个人脚本或API调用。 |
| 经典个人访问令牌 Classic PAT |
ghp_ |
长寿命,可手动设置或自动删除 | 粗粒度,如repo范围将授权用户能访问的所有仓库 |
存在安全风险,建议仅在必要时(如需要访问企业级API或特定公共仓库写入权限时)使用。 |
| GitHub Actions 内置令牌 GITHUB_TOKEN |
无 | 工作流运行期间 | 默认只对当前仓库有读写权限,可在工作流中精确配置 | GitHub Actions 自动化首选。无需手动创建,安全且权限最小化。 |
| GitHub App 安装令牌 Installation Token |
ghs_ |
1小时 | 与App安装相关联,可访问该App有权访问的仓库 | 推荐用于组织级自动化,如CI/CD系统。权限隔离好,可独立于个人账号管理。 |
| OAuth App 访问令牌 | gho_ |
长寿命 | 由第三方OAuth App代表用户请求的权限 | 用于将第三方Web应用或CLI工具与GitHub集成。 |
🛡️ 核心选择建议
为什么“细粒度”比“经典”更安全?
GitHub 官方强烈推荐优先使用细粒度个人访问令牌,原因在于其安全模型有显著提升:
- 权限更精细:经典令牌的权限是粗放型的(如
repo范围),一旦拥有,就能访问用户有权访问的所有仓库。而细粒度令牌可以精确控制到特定仓库的单个操作(如读/写)。 - 降低泄露风险:如果细粒度令牌泄露,攻击者能造成的破坏被限制在极小的范围内,大大缩小了“爆炸半径”。
⚠️ 仍需使用“经典”令牌?
由于功能迭代需要时间,在某些场景下,你仍然需要使用经典个人访问令牌:
- 需要向自己不是成员的公共仓库贡献代码。
- 需要访问企业级别的资源或API。
- 作为外部协作者访问组织的仓库。
🤖 自动化场景的最佳实践
针对自动化任务,应遵循以下选择顺序:
- GitHub Actions 中优先使用
GITHUB_TOKEN:这是最安全、最便捷的方式,令牌由系统自动生成和管理,仅在当前工作流中有效。 - 组织级自动化优先考虑 GitHub App:GitHub App 的安装令牌具有短生命周期(1小时),且权限与特定的应用安装绑定,非常适合CI/CD等系统,比使用绑定个人账号的PAT更安全、更可控。
- 个人脚本首选细粒度PAT:只有在上述方案都无法满足需求时,才创建个人访问令牌,并务必选择细粒度类型。
🔑 快速识别令牌类型
可以通过令牌的前缀来快速识别其类型:
ghp_:经典个人访问令牌github_pat_:细粒度个人访问令牌gho_:OAuth App 访问令牌ghu_:GitHub App 用户访问令牌ghs_:GitHub App 安装访问令牌ghr_:GitHub App 刷新令牌