你实际删除的是什么
个人访问令牌(PAT)只是可以在你的 GitHub 账户上操作的多种凭据之一。在删除任何东西之前,了解你面对的是哪种凭据会很有帮助,因为移除步骤和副作用各不相同。
| 凭据 | 通常用途 | 管理位置 | 删除影响 |
|---|---|---|---|
| 个人访问令牌(细粒度或经典) | 让脚本、工具或 CI 以你的身份、按限定权限操作 | Settings → Developer settings → Personal access tokens | 仍在用该令牌的任何东西,以及该令牌创建的任何部署密钥 |
| OAuth 授权 | 你批准代表你账户操作的第三方应用 | Settings → Applications(已授权的 OAuth 应用) | 该应用的访问权限;应用本身不会被删除 |
| SSH 账户密钥 | 通过 SSH 为你的账户验证 Git 操作 | Settings → SSH and GPG keys | 依赖该密钥的 SSH 访问 |
| 浏览器会话 | 浏览器中活跃的已登录会话 | 退出登录控件和会话设置 | 仅该会话;它不是令牌或密钥 |
本文涵盖第一行。列出其他行是为了避免混淆:移除 OAuth 授权或 SSH 密钥不会删除个人访问令牌,删除令牌也不会撤销 SSH 密钥或结束浏览器会话。
第 1 步:在不暴露值的情况下建立令牌清单
目标是列出令牌名称及每个令牌的使用位置——而不是令牌字符串列表。将令牌值视为机密,绝不复制到笔记、工单或聊天中。
- 打开你的 GitHub 账户设置,进入 Developer settings,然后进入 Personal access tokens。同时检查 Fine-grained tokens 和 Tokens classic,因为这两种类型是分开列出的。
- 对每个令牌,只记录:令牌名称、类型(细粒度或经典),以及 GitHub 显示的关于其用途或到期时间的任何备注。
- 对每个令牌,写下你认为它用在哪里:CI 任务、部署脚本、本地工具、计划任务、第三方集成,或者你记不清的任何地方。
- 标记你无法定位的令牌。无法定位的令牌是审查候选,而不是自动删除——可能仍有东西依赖它。
一个简单的工作表就足够了:
| 令牌名称 | 类型 | 已知使用方 | 最后已知使用 | 决定 |
|---|---|---|---|---|
| example-deploy | 细粒度 | CI 部署任务 | 未知 | 删除前检查任务 |
| example-old-script | 经典 | 未找到 | 旧 | 验证后删除 |
不要将令牌值粘贴到此表中。如果使用方存储了令牌,请检查该系统自己的配置,而不是重新读取机密。
第 2 步:移除前检查依赖的自动化
删除令牌会破坏仍在使用它进行身份验证的任何东西。在删除之前,确认每个已知使用方:
- 在 CI 配置、部署脚本和计划任务中搜索对令牌名称或保存它的机密存储条目的引用。
- 检查令牌的权限是否与使用方需求匹配。看似未使用的令牌可能是某个小任务唯一可用的凭据。
- 逐个令牌决定:保留、替换为更窄的凭据,或删除。如果你无法确认使用方,请暂停而不是猜测。
GitHub 记录了一个值得首先检查的特定依赖:创建了部署密钥的个人访问令牌与该部署密钥相关联。
GitHub 警告,删除创建了部署密钥的个人访问令牌也会删除该部署密钥。来源
该警告范围很窄。它适用于由该令牌创建的部署密钥。它并不是说删除任何令牌都会影响账户上的每个 SSH 密钥、每个部署密钥或每个集成。请检查特定令牌的历史记录和仓库的部署密钥,而不是假设有广泛影响。
第 3 步:删除令牌
当你确认某个令牌可以安全移除后,GitHub 文档中的路径是:
GitHub 个人访问令牌的删除路径是 Settings → Developer settings → Personal access tokens,然后选择 Fine-grained tokens 或 Tokens classic,再点击 Delete。来源
删除后,请验证结果,而不是假设它已生效:
- 确认该令牌不再出现在其类型的列表中。
- 运行或触发你确定为使用方的自动化,检查它是否仍能通过身份验证。如果失败,说明你发现了一个遗漏的依赖;请用你控制的新凭据恢复访问,而不是重用旧值。
- 如果被删除的令牌创建了部署密钥,请检查仓库的部署密钥,确认文档所述的移除已发生,且没有其他密钥受到影响。
需要计划的失败路径
| 情况 | 该怎么做 |
|---|---|
| 删除后 CI 任务失败 | 确定它使用了哪个机密,确认任务所有者,并通过正常流程签发替换凭据 |
| 找不到令牌的使用方 | 不要凭猜测删除;先搜索配置文件和机密存储,在确认之前保留令牌 |
| 部署密钥消失了 | 这是令牌创建它时的文档化后果;如果仓库仍需要,请有意重新创建该密钥 |
| 不确定凭据是令牌还是 OAuth 应用 | 检查它出现在哪个设置部分;两者是分开管理的 |
本清单不涵盖的内容
本指南不描述轮换凭据、签发新令牌或更改权限——这些步骤取决于你自己的设置和 GitHub 当前界面,你应在操作时确认。它也不涵盖移除 OAuth 授权、SSH 账户密钥或浏览器会话,只是指出它们是分开的。删除令牌会移除该凭据;它本身并不证明连接服务持有的任何数据已被擦除。
用户名查询适合用在哪里,不适合用在哪里
如果你的清理工作属于对某个用户名下公开可见内容的更广泛审查,TraceSeek 是一个独立应用,可在 3,000+ 个平台上检查已知的公开用户名。它报告公开匹配结果,这些是线索而非所有权证明,并且它无法登录账户、更改账户设置、删除令牌或验证任何人的真实身份。它不是用于访问私密账户或保证移除任何内容的工具。对于本文中的令牌任务,工作发生在你的 GitHub 设置中,而不是在查询应用里。