Skip to content

🔑 GitHub PAT:赛博堡垒的万能 API 通行证

🌱 创建: 2026/04/23 ⏱️ 更新: 2026/05/22

This content is not available in your language yet.

在赛博工地的自动化建设中,我们经常需要让各种“无头机器”(比如 CI/CD 流水线、自动化部署工具、本地脚本)去访问我们在 GitHub 上的私有仓库(Private Repositories)。

为了安全,我们绝对不能把自己的 GitHub 登录密码硬编码在脚本里。标准的工业做法是:向 GitHub 申请一张专属的机器通行证——Personal Access Token (PAT)

GitHub 目前提供两种 Token:Fine-grained (细粒度,仍在发展中) 和 Classic (经典版)。为了确保与各种第三方工具链的最大兼容性,我们强烈建议日常基建使用 Tokens (classic)

  1. 登录你的 GitHub 账号。
  2. 点击右上角的个人头像,选择下拉菜单底部的 Settings
  3. 在左侧边栏,一直滚动到底部,点击 Developer settings(开发者设置)。
  4. 在左侧菜单中,展开 Personal access tokens,然后点击 Tokens (classic)
  1. 点击右上角的 Generate new token,在下拉菜单中选择 Generate new token (classic)
  2. 此时系统会要求你输入密码或进行二次验证 (2FA) 以确认身份。

3. 配置权限与有效期 (核心步骤)

Section titled “3. 配置权限与有效期 (核心步骤)”

在这个页面,你需要为这张通行证设定权限边界:

  • Note (用途备注):一定要写清楚它的用途,比如 Homelab-General-AutomationMac-Terminal-CLI,方便你日后管理和随时吊销。
  • Expiration (有效期)
    • 出于安全最佳实践,建议设置 30 天或 90 天。
    • 如果是高度隔离的 HomeLab 内部使用,且你极度讨厌定期更换密码,可以选择 No expiration (永不过期)。(⚠️ 风险自担)
  • Select scopes (勾选权限范围)
    • 最常用的权限:repo。找到 repo 这个大分类(Full control of private repositories)并将其勾选
    • 只要勾选了 repo,持有这张 Token 的程序就能克隆、拉取、推送你账号下的所有私有和公开仓库代码。对于 99% 的自动化工具来说,这个权限已经足够了。
    • (如果你的工具需要操作 GitHub Packages 镜像库,可以按需额外勾选 write:packages / read:packages)
  1. 滚动到页面最底部,点击绿色的 Generate token 按钮。
  2. 页面会跳转,并在屏幕上方高亮显示你刚刚生成的 Token(一长串通常以 ghp_ 开头的乱码)。

🛑 终极警告:阅后即焚 这是你唯一一次能在网页上看到这串 Token 的机会! 一旦你刷新或离开此页面,GitHub 将永远隐藏这串字符。请立刻将其复制,并妥善保存在你的密码管理器(如 1Password、Bitwarden)中!


🛠️ 实战案例:使用 Token 让 ArgoCD 接入私有图纸库

Section titled “🛠️ 实战案例:使用 Token 让 ArgoCD 接入私有图纸库”

拿到了这把“万能钥匙”,我们怎么用它?以我们赛博工地里大名鼎鼎的总监工 ArgoCD 为例:

当你想让 ArgoCD 去监听你的私有 GitOps 仓库时:

  1. 打开 ArgoCD UI 面板,进入 Settings -> Repositories
  2. 点击 + CONNECT REPO,选择 HTTPS 连接方式。
  3. Repository URL: 填入你的私有仓库 HTTPS 地址(如 https://github.com/besthomelab/k3s-homelab-gitops.git)。
  4. Username: 填入你的 GitHub 登录用户名。
  5. Password: 👉 就在这里,粘贴你刚才生成的 Token!千万不要填你的 GitHub 账号密码!
  6. 点击 Connect,看到绿色的 Successful 标志,说明你的自动化工具已经成功拿到了私有仓库的通行证。

(同理,你在命令行里使用 git clone https://... 遇到弹窗要求输入密码时,也可以直接粘贴这串 Token 作为密码使用。)

Last updated: