如何生成 GitHub Token(用于 Hexo 部署):保姆级教程+避坑指南
前置说明:为什么需要 GitHub Token?
在使用 Hexo 部署博客到 GitHub Pages 时,你可能会遇到「密码验证失败」或「需要双重验证」的问题——这是因为 GitHub 已逐步淘汰「密码直接验证」的方式,转而推荐更安全的 Personal Access Token(个人访问令牌)。
尤其适合以下场景:
- 已开启 GitHub 双重验证(2FA),密码无法直接用于部署;
- 不想在配置文件/命令行中暴露 GitHub 主密码;
- 需要给 Hexo 分配「仅推送仓库」的最小权限,避免权限过度开放。
为了让你更直观理解,这里对比两种验证方式的差异:
验证方式 | 安全性 | 便捷性 | GitHub 支持度 |
---|---|---|---|
密码验证 | 低(易泄露、无权限控制) | 一般(需频繁输入,2FA 下失效) | 逐步淘汰 |
Personal Access Token | 高(仅开放必要权限,可随时吊销) | 高(一次配置,长期使用) | 推荐使用 |
1. 打开 Token 生成页面(两种路径,避免迷路)
如果直接点击链接失效,可通过 GitHub 后台逐步进入,确保你能找到入口:
路径1:直接访问(推荐)
登录 GitHub 后,打开 Personal Access Tokens (classic) 页面:
👉 https://github.com/settings/tokens
(图1:GitHub Personal Access Tokens 页面,「Generate new token」按钮)
路径2:后台逐步进入(备用)
- 点击 GitHub 右上角「头像」→ 选择 Settings(设置);
- 拉到页面底部,选择 Developer settings(开发者设置);
- 在左侧菜单找到 Personal access tokens → 点击 Tokens (classic);
- 点击绿色按钮 Generate new token → 再次选择 Generate new token (classic)(新手优先用 classic 令牌,配置更简单)。
2. 填写信息并设置权限(关键:避免权限不足或过度开放)
这一步决定 Token 是否能正常用于 Hexo 部署,每一项都要注意:
配置项 | 填写说明 | 避坑提示 |
---|---|---|
Note(名称) | 自定义一个易识别的名称,比如 Hexo_Deploy_GitHubPages | 不要写“我的Token”,否则后续多令牌时分不清用途 |
Expiration(有效期) | 推荐选择 No expiration(永久有效),避免频繁重新配置; 若担心安全,可选「30天/90天」,到期前需提前重新生成 | 选“永久”不代表无风险,后续若Token泄露,需立即吊销(步骤见 FAQ) |
Scopes(权限) | 只需要勾选 repo 即可(勾选后会自动选中其下所有子权限) | ❶ 不要勾选无关权限(如 gist、user),遵循“最小权限原则”; ❷ 若漏勾 repo,会出现“权限不足(permission denied)” |
配置完成后,点击页面底部绿色按钮 Generate token。
(图3:Token 配置页面截图,标注「Note」「Expiration」「repo权限」和「Generate token」按钮)
3. 复制 Token(重中之重:只显示一次,丢了无法找回)
生成成功后,GitHub 会在页面顶部显示一串以 ghp_
开头的字符串(示例:ghp_abCDefGHIjklMNOpqrSTUvwxYZ123456789
)。
⚠️⚠️⚠️ 注意:Token 只显示一次,一定要复制保存!
必须注意的3件事:
- ⚠️立即复制:Token 仅在当前页面显示一次,刷新或关闭页面后无法再次查看;
- 安全存储:推荐用「密码管理器」(如 1Password、Bitwarden、系统自带钥匙串)存储,不要明文保存在记事本、桌面文档或代码仓库中(会导致账号被盗);
- 暂不关闭页面:建议先复制到安全地方,再继续配置 Hexo,避免中途需要重新查看。
(图4:Token 生成成功后的显示截图,红框标注 Token 字符串和“仅显示一次”的提示)
4. 配置到 Hexo(含示例+错误排查)
接下来将 Token 配置到 Hexo 的部署文件中,确保能正常推送博客:
步骤1:找到 Hexo 配置文件
打开你的 Hexo 博客根目录,找到 _config.yml
文件(若用 Next 等主题,需区分“站点配置”和“主题配置”,这里修改站点配置)。
步骤2:修改 deploy 配置
找到 deploy
节点,按以下格式替换内容(关键:将 <你的用户名>
和 <你的Token>
替换为实际信息):
deploy:type: git# 格式:https://<GitHub用户名>:<你的Token>@github.com/<GitHub用户名>/<GitHub用户名>.github.io.gitrepo: https://leo-angli:ghp_abCDefGHIjklMNOpqrSTUvwxYZ123456789@github.com/leo-angli/leo-angli.github.io.gitbranch: master# 若你的仓库默认分支是 main,需改为 mainmessage: "Hexo deploy: {{ now('YYYY-MM-DD HH:mm:ss') }}" # 可选:添加部署时间备注,方便查看提交记录
步骤3:执行部署命令
在 Hexo 根目录打开终端,执行以下命令(若出现错误,见下方排查建议):
# 清理缓存(避免旧文件干扰)
hexo clean
# 生成静态页面(将 Markdown 转为 HTML 等文件)
hexo generate # 可简写为 hexo g
# 部署到 GitHub Pages
hexo deploy # 可简写为 hexo d
常见错误排查:
- 若提示「permission denied (publickey)」:检查
repo
链接是否为 https 协议(SSH 协议不支持 Token,需用 SSH 密钥); - 若提示「Could not read from remote repository」:确认
repo
中的「用户名」和「仓库名」是否正确(仓库名必须是<用户名>.github.io
); - 若提示「403 Forbidden」:重新生成 Token,确保勾选「repo」权限,且配置中的 Token 未写错。
(图5:Hexo 部署成功的终端截图,红框标注“Deploy done”提示和 GitHub 仓库提交记录)
5. 常见问题(FAQ):解决你可能遇到的后续问题
Q1:Token 丢了/忘了怎么办?
无法找回!需按上述步骤重新生成新 Token,并替换 Hexo 配置文件中 repo
里的旧 Token(旧 Token 会自动失效,无需手动吊销)。
Q2:可以用「Fine-grained tokens(细粒度令牌)」替代 classic 令牌吗?
可以,但细粒度令牌需要额外配置「仓库访问权限」(需指定 <用户名>.github.io
仓库),新手建议先使用「classic 令牌」——配置更简单,不容易因权限遗漏导致部署失败。
Q3:Token 可以给他人使用吗?
不建议!Token 等同于你的账号权限(仅限制定的范围),分享给他人可能导致博客被篡改、仓库数据泄露。若需协作,建议给对方分配「仓库协作者」权限,而非分享 Token。
Q4:如何吊销已泄露/不再使用的 Token?
进入 GitHub Token 管理页面,找到对应的 Token,点击右侧「Delete」即可(吊销后,依赖该 Token 的部署会失效,需用新 Token 替换)。
总结:Token 生成+部署的核心 Checklist
为了避免遗漏关键步骤,可按以下清单核对:
- ✅ 生成 Token 时,勾选「repo」权限,名称标注用途;
- ✅ 立即将 Token 存到密码管理器,不明文保存;
- ✅ 配置 Hexo 时,确保
repo
链接格式正确(https 协议+用户名+Token); - ✅ 部署失败时,优先检查 Token 权限、repo 链接、命令是否正确;
- ✅ 若 Token 泄露,第一时间在 GitHub 上吊销。