简介
在本教程中,我们将指导你完成设置和配置 Git 个人访问令牌(personal access tokens)的过程。你将学习如何生成、保护和管理这些令牌,以及了解它们在 Git 生态系统中的重要性。在本指南结束时,你将对如何有效地使用个人访问令牌进行安全的 Git 操作有深入的了解。

本实验(Lab)需要联网学习,因此只有 LabEx Pro 用户可以启动虚拟机。将你的账户升级为 Pro。
理解 Git 个人访问令牌
Git 是一个广泛使用的分布式版本控制系统,它使开发者能够在项目上进行协作、跟踪更改并管理代码仓库。有效使用 Git 的一个重要方面是在与远程仓库交互时进行安全认证。
什么是个人访问令牌?
个人访问令牌(Personal Access Tokens,PATs)是一种认证凭证,允许你在不使用用户名和密码的情况下安全地访问你的 Git 仓库。它们的功能与密码类似,但具有几个优点:
- 增强的安全性:可以在不更改主账户密码的情况下撤销或轮换 PATs。
- 细粒度权限:你可以通过分配特定的作用域(scope)来限制令牌可以执行的操作。
- 自动化支持:PATs 允许脚本、CI/CD 管道和其他工具进行程序化访问。
- 多因素认证兼容性:PATs 可以与启用了多因素认证(MFA)的账户无缝配合使用。
为什么要使用个人访问令牌?
许多 Git 托管平台,包括 GitHub、GitLab 和 Bitbucket,正在逐步淘汰基于密码的 Git 操作认证方式。这一转变主要是出于安全考虑。个人访问令牌提供了一种更安全的替代方案,降低了与长期、广泛访问凭证相关的风险。
当你使用个人访问令牌而不是密码时:
- 你可以将令牌的功能限制为仅满足所需的操作
- 你可以为不同的目的创建多个令牌
- 你可以撤销单个令牌而不影响其他令牌
- 你可以更好地跟踪访问和使用情况的审计记录
在接下来的步骤中,我们将创建一个个人访问令牌并配置 Git 使用它进行认证。
在 GitHub 上生成个人访问令牌
在这一步中,我们将在 GitHub 上生成一个个人访问令牌。在其他 Git 平台(如 GitLab 或 Bitbucket)上的操作过程类似,只是用户界面略有不同。
在 GitHub 上创建令牌
按照以下步骤生成你的个人访问令牌:
打开终端并安装 GitHub CLI 工具,它提供了一种方便的方式来与 GitHub 进行交互:
sudo apt-get update sudo apt-get install -y gh通过运行以下命令与 GitHub 进行身份验证:
gh auth login

按照交互式提示操作:
- 当被问及账户时,选择“GitHub.com”
- 选择“HTTPS”作为你首选的协议
- 确认你要使用 GitHub 凭证进行身份验证
- 当提示选择身份验证方法时,选择“使用 Web 浏览器登录”
将会显示一个一次性代码。GitHub 会在你的浏览器中打开,或者会要求你访问一个 URL 并输入此代码。
身份验证成功后,生成一个新的个人访问令牌:
gh auth token此命令将显示你当前的身份验证令牌。复制此令牌并将其保存在安全的位置,因为我们在接下来的步骤中会用到它。
如果你想直接创建具有特定作用域(scope)的令牌,可以使用:
gh auth refresh -s repo,read:org gh auth token这将创建一个具有仓库和组织读取权限的令牌。
另外,你也可以直接从 GitHub 网站生成令牌:

- 访问 https://github.com
- 点击右上角的个人资料图片
- 选择“Settings”
- 向下滚动并点击左侧边栏中的“Developer settings”
- 点击“Personal access tokens”,然后点击“Tokens (classic)”
- 点击“Generate new token”并选择“Generate new token (classic)”
- 为你的令牌起一个描述性的名称,如“Git CLI access”
- 选择适当的作用域(至少选择“repo”以获得仓库访问权限)
- 点击“Generate token”
- 复制生成的令牌并安全保存
请记住将你的令牌存储在安全的位置,因为 GitHub 只会显示一次。如果你丢失了它,就需要重新生成一个。
配置 Git 使用个人访问令牌
现在你已经生成了个人访问令牌,需要配置 Git,使其在与远程仓库交互时使用该令牌进行身份验证。有几种方法可以实现这一点。
方法 1:使用 Git 凭证助手
Git 凭证助手可以让 Git 记住你的凭证,这样你就无需每次都输入它们。
打开终端并导航到你的项目目录:
cd ~/project配置 Git 使用凭证助手来存储你的凭证:
git config --global credential.helper store注意:这会将你的凭证以未加密的形式存储在磁盘上。若要选择更安全的选项,你可以使用缓存助手,它会将凭证临时存储在内存中:
git config --global credential.helper 'cache --timeout=3600'这会将你的凭证在内存中存储 1 小时(3600 秒)。
创建一个示例 Git 仓库来测试你的配置:
mkdir -p ~/project/test-repo cd ~/project/test-repo git init添加一个远程仓库(你需要将
yourusername替换为你实际的 GitHub 用户名):git remote add origin https://github.com/yourusername/test-repo.git下次 Git 需要进行身份验证时(例如,在推送或拉取时),系统会提示你输入凭证。输入你的 GitHub 用户名,并使用你的个人访问令牌作为密码。
方法 2:使用基于 URL 的身份验证
另一种方法是将你的令牌直接嵌入到仓库 URL 中:
在你的项目目录中,使用你的令牌配置远程仓库 URL:
git remote set-url origin https://YOUR_TOKEN@github.com/yourusername/test-repo.git将
YOUR_TOKEN替换为你实际的个人访问令牌,将yourusername替换为你的 GitHub 用户名。创建一个测试文件来验证配置:
echo "## Test Repository" > README.md git add README.md git commit -m "Initial commit"
方法 3:使用 Git 配置文件
你也可以直接编辑 Git 配置文件:
创建或编辑仓库中的
.git/config文件:nano ~/project/test-repo/.git/config更新
origin远程仓库的 URL 以包含你的令牌:[remote "origin"] url = https://YOUR_TOKEN@github.com/yourusername/test-repo.git fetch = +refs/heads/*:refs/remotes/origin/*将
YOUR_TOKEN替换为你实际的个人访问令牌,将yourusername替换为你的 GitHub 用户名。按
Ctrl+O保存文件,然后按Enter,再按Ctrl+X退出。
出于安全考虑,对于大多数用户,通常建议使用凭证助手方法(方法 1),因为它避免了将令牌直接存储在配置文件中。
测试个人访问令牌
在配置 Git 使用个人访问令牌后,验证身份验证是否正常工作非常重要。在这一步中,我们将通过执行常见的 Git 操作来测试该令牌。
在 GitHub 上创建测试仓库
首先,让我们使用 GitHub CLI 在 GitHub 上创建一个测试仓库:
在 GitHub 上创建一个新仓库:
cd ~/project gh repo create test-pat-repo --private --clone cd test-pat-repo此命令会创建一个名为“test-pat-repo”的新私有仓库,并将其克隆到你的本地机器上。
测试基本的 Git 操作
现在,让我们执行一些基本的 Git 操作,以确保你的个人访问令牌正常工作:
创建一个简单的 README 文件:
echo "## Test PAT Repository" > README.md echo "This repository is used to test Personal Access Token configuration." >> README.md添加并提交该文件:
git add README.md git commit -m "Add README file"将更改推送到 GitHub:
git push -u origin main如果你的个人访问令牌配置正确,推送操作应该会成功,且不会提示输入密码。如果你使用的是凭证助手,并且这是你第一次推送,系统可能会提示你输入用户名和令牌,之后这些信息会被存储起来供后续使用。
进行另一项更改以验证存储的凭证:
echo "### Additional Information" >> README.md echo "This section contains additional information about the repository." >> README.md git add README.md git commit -m "Update README with additional information" git push第二次推送应该无需任何身份验证提示即可完成,这证实了你的令牌正在被正确使用。
验证仓库访问权限
为了进一步确认你的令牌正常工作,你可以列出你的仓库:
gh repo list --limit 5
此命令应该会显示你的 GitHub 仓库列表,包括我们刚刚创建的测试仓库。如果此命令执行成功,则证实你的个人访问令牌具有访问仓库的正确权限。
如果你在这些测试过程中遇到任何问题,请仔细检查你的令牌配置,并确保令牌具有你尝试执行的操作所需的作用域(权限)。
管理和轮换个人访问令牌
个人访问令牌应像对待密码一样谨慎处理。在最后这一步,我们将讨论管理和轮换令牌以维护安全性的最佳实践。
列出你的个人访问令牌
要查看你在 GitHub 上现有的个人访问令牌:
使用 GitHub CLI:
gh auth status此命令会显示你当前的身份验证状态信息,包括正在使用的令牌。
另外,你也可以通过 GitHub 网页界面查看所有令牌:
- 访问 GitHub.com 并登录
- 点击右上角的个人资料图片
- 选择“Settings”
- 导航至“Developer settings” > “Personal access tokens” > “Tokens (classic)”
令牌安全最佳实践
为了维护个人访问令牌的安全性,请遵循以下最佳实践:
限制令牌作用域:仅授予令牌完成预期用途所需的最小权限。
使用描述性名称:为你的令牌赋予有意义的名称,以表明其用途和使用场景。
设置过期日期:对于非关键令牌,设置过期日期以强制定期轮换。
要使用 GitHub CLI 创建带有过期日期的令牌:
gh auth refresh -s repo,read:org --expiry 30d gh auth token这将创建一个 30 天后过期的令牌。
定期审计令牌:定期审查你的令牌,并撤销任何不再需要的令牌。
安全存储令牌:切勿将令牌存储在公共仓库、未加密的文件中,或与他人共享。
使用环境变量:在脚本或应用程序中使用令牌时,将其存储为环境变量,而不是硬编码。
例如:
export GITHUB_TOKEN=your_token_here
撤销个人访问令牌
如果你怀疑某个令牌已泄露或不再需要,请立即撤销它:
使用 GitHub CLI(将
TOKEN替换为你的令牌):gh auth logout这会让你退出登录并使当前令牌失效。
通过 GitHub 网页界面:
- 访问 GitHub.com 并登录
- 导航至“Settings” > “Developer settings” > “Personal access tokens” > “Tokens (classic)”
- 找到你要撤销的令牌
- 点击“Delete”并确认操作
轮换你的令牌
定期轮换令牌是一种良好的安全实践。以下是轮换令牌的方法:
- 生成一个与旧令牌具有相同权限的新令牌。
- 更新你的应用程序和配置以使用新令牌。
- 测试新令牌是否能正常工作。
- 撤销旧令牌。
对于自动化流程,可以考虑使用环境变量或安全保管库来存储令牌,这样会使轮换更容易。
## Generate a new token
gh auth refresh -s repo,read:org
NEW_TOKEN=$(gh auth token)
## Update your Git remote URL with the new token
git remote set-url origin https://${NEW_TOKEN}@github.com/yourusername/your-repo.git
## Verify it works
git fetch
## Revoke the old token through GitHub website
echo "Remember to revoke your old token in GitHub settings"
通过遵循这些最佳实践,你可以在最小化未经授权访问风险的同时,保持对 Git 仓库的安全访问。
总结
在本教程中,你已经学习了如何有效地使用 Git 个人访问令牌。以下是你所完成内容的回顾:
- 理解了使用个人访问令牌进行 Git 身份验证的重要性和好处
- 使用 CLI 和网页界面在 GitHub 上生成了个人访问令牌
- 配置 Git 使用个人访问令牌进行仓库操作
- 通过执行基本的 Git 操作测试了令牌配置
- 学习了管理、保护和轮换令牌的最佳实践
通过使用个人访问令牌而非密码,你增强了 Git 工作流程的安全性。现在,你可以创建具有特定权限的令牌,限制其使用期限,并在必要时撤销它们,而不会影响你的主账户凭证。
请记住以下要点:
- 始终为你的令牌使用最小必要权限
- 安全存储令牌,切勿共享
- 定期轮换令牌,特别是对于敏感仓库
- 立即撤销未使用或已泄露的令牌
遵循这些实践,你可以在最小化安全风险的同时,保持对 Git 仓库的安全访问。



