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

本实验(Lab)需要联网学习,因此只有 LabEx Pro 用户可以启动虚拟机。将你的账户升级为 Pro。
在本教程中,我们将指导你完成设置和配置 Git 个人访问令牌(personal access tokens)的过程。你将学习如何生成、保护和管理这些令牌,以及了解它们在 Git 生态系统中的重要性。在本指南结束时,你将对如何有效地使用个人访问令牌进行安全的 Git 操作有深入的了解。
本实验(Lab)需要联网学习,因此只有 LabEx Pro 用户可以启动虚拟机。将你的账户升级为 Pro。
Git 是一个广泛使用的分布式版本控制系统,它使开发者能够在项目上进行协作、跟踪更改并管理代码仓库。有效使用 Git 的一个重要方面是在与远程仓库交互时进行安全认证。
个人访问令牌(Personal Access Tokens,PATs)是一种认证凭证,允许你在不使用用户名和密码的情况下安全地访问你的 Git 仓库。它们的功能与密码类似,但具有几个优点:
许多 Git 托管平台,包括 GitHub、GitLab 和 Bitbucket,正在逐步淘汰基于密码的 Git 操作认证方式。这一转变主要是出于安全考虑。个人访问令牌提供了一种更安全的替代方案,降低了与长期、广泛访问凭证相关的风险。
当你使用个人访问令牌而不是密码时:
在接下来的步骤中,我们将创建一个个人访问令牌并配置 Git 使用它进行认证。
在这一步中,我们将在 GitHub 上生成一个个人访问令牌。在其他 Git 平台(如 GitLab 或 Bitbucket)上的操作过程类似,只是用户界面略有不同。
按照以下步骤生成你的个人访问令牌:
打开终端并安装 GitHub CLI 工具,它提供了一种方便的方式来与 GitHub 进行交互:
sudo apt-get update
sudo apt-get install -y gh
通过运行以下命令与 GitHub 进行身份验证:
gh auth login
按照交互式提示操作:
将会显示一个一次性代码。GitHub 会在你的浏览器中打开,或者会要求你访问一个 URL 并输入此代码。
身份验证成功后,生成一个新的个人访问令牌:
gh auth token
此命令将显示你当前的身份验证令牌。复制此令牌并将其保存在安全的位置,因为我们在接下来的步骤中会用到它。
如果你想直接创建具有特定作用域(scope)的令牌,可以使用:
gh auth refresh -s repo,read:org
gh auth token
这将创建一个具有仓库和组织读取权限的令牌。
另外,你也可以直接从 GitHub 网站生成令牌:
请记住将你的令牌存储在安全的位置,因为 GitHub 只会显示一次。如果你丢失了它,就需要重新生成一个。
现在你已经生成了个人访问令牌,需要配置 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 用户名,并使用你的个人访问令牌作为密码。
另一种方法是将你的令牌直接嵌入到仓库 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"
你也可以直接编辑 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 CLI 在 GitHub 上创建一个测试仓库:
在 GitHub 上创建一个新仓库:
cd ~/project
gh repo create test-pat-repo --private --clone
cd test-pat-repo
此命令会创建一个名为“test-pat-repo”的新私有仓库,并将其克隆到你的本地机器上。
现在,让我们执行一些基本的 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 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 网页界面:
定期轮换令牌是一种良好的安全实践。以下是轮换令牌的方法:
对于自动化流程,可以考虑使用环境变量或安全保管库来存储令牌,这样会使轮换更容易。
## 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 工作流程的安全性。现在,你可以创建具有特定权限的令牌,限制其使用期限,并在必要时撤销它们,而不会影响你的主账户凭证。
请记住以下要点:
遵循这些实践,你可以在最小化安全风险的同时,保持对 Git 仓库的安全访问。