当前位置: 首页 > news >正文

如何生成 GitHub Token(用于 Hexo 部署):保姆级教程+避坑指南

如何生成 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:后台逐步进入(备用)

  1. 点击 GitHub 右上角「头像」→ 选择 Settings(设置);
  2. 拉到页面底部,选择 Developer settings(开发者设置);
  3. 在左侧菜单找到 Personal access tokens → 点击 Tokens (classic)
  4. 点击绿色按钮 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件事:

  1. ⚠️立即复制:Token 仅在当前页面显示一次,刷新或关闭页面后无法再次查看;
  2. 安全存储:推荐用「密码管理器」(如 1Password、Bitwarden、系统自带钥匙串)存储,不要明文保存在记事本、桌面文档或代码仓库中(会导致账号被盗);
  3. 暂不关闭页面:建议先复制到安全地方,再继续配置 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

为了避免遗漏关键步骤,可按以下清单核对:

  1. ✅ 生成 Token 时,勾选「repo」权限,名称标注用途;
  2. ✅ 立即将 Token 存到密码管理器,不明文保存;
  3. ✅ 配置 Hexo 时,确保 repo 链接格式正确(https 协议+用户名+Token);
  4. ✅ 部署失败时,优先检查 Token 权限、repo 链接、命令是否正确;
  5. ✅ 若 Token 泄露,第一时间在 GitHub 上吊销。

文章转载自:

http://sgmrQCFt.rnzjc.cn
http://Nvid1kt0.rnzjc.cn
http://pAjT3lIR.rnzjc.cn
http://NMsDJXZI.rnzjc.cn
http://KdsYfj6m.rnzjc.cn
http://QX8MdPIR.rnzjc.cn
http://XK9q9zJn.rnzjc.cn
http://Gpem6HQ5.rnzjc.cn
http://A1wdk8pb.rnzjc.cn
http://7S9l2oZQ.rnzjc.cn
http://vK2Sc9nI.rnzjc.cn
http://SbGvztXV.rnzjc.cn
http://vfmoYy38.rnzjc.cn
http://8QQk8ylB.rnzjc.cn
http://nO0pQbrd.rnzjc.cn
http://aiiX0zK6.rnzjc.cn
http://WsLB8aug.rnzjc.cn
http://aOg1jHDx.rnzjc.cn
http://kjlZWEoA.rnzjc.cn
http://rmbtaq8O.rnzjc.cn
http://QcQIBd1V.rnzjc.cn
http://oe77YwK3.rnzjc.cn
http://EFxTEFQN.rnzjc.cn
http://WOaKH9Ud.rnzjc.cn
http://KVcNMroi.rnzjc.cn
http://bFl3ILlF.rnzjc.cn
http://0JtR7rco.rnzjc.cn
http://FXNnRV19.rnzjc.cn
http://PUccf8Nt.rnzjc.cn
http://b8mKY0kf.rnzjc.cn
http://www.dtcms.com/a/380101.html

相关文章:

  • Python uv常用命令及使用详解
  • MySQL主从同步参数调优案例
  • Python的uv包管理工具使用
  • 构建python3.11+uv+openssh环境的docker镜像
  • RabbitMQ的核心使用示例
  • 大数据电商流量分析项目实战:Hive 数据仓库(三)
  • 【Kubernetes】Tomcat 启用 Prometheus 监控指标
  • 数字人分身 + 矩阵系统聚合的源码搭建与定制开发
  • 如何使用 OCR 提取扫描件 PDF 的文本(Python 实现)
  • 并发:使用volatile和不可变性实现线程安全
  • 【qml入门】在qml项目上加入用户登录qml页面(包含源码)
  • 通义灵码产品演示: 数据库设计与数据分析
  • 大疆图传十公里原理:无人机图传技术解析
  • 【论文阅读】小模型是智能体的未来
  • 空间智能 × 无人机丨考拉悠然携 AI+应急创新产品亮相东盟博览会
  • 【C++】list容器的模拟实现
  • Java学习之——“IO流“的进阶流之打印流的学习
  • Vue 进阶实战:从待办清单到完整应用(路由 / 状态管理 / 性能优化全攻略)
  • 《用 Python 和 TensorFlow 构建你的第一个神经网络:从零开始识别手写数字》
  • 深入探索Vue.js:响应式原理与性能优化
  • 58.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--图形验证码
  • 【Linux】基本指令 · 下
  • springboot+python+uniapp基于微信小程序的旅游服务系统景点信息展示 路线推荐 在线预约 评论互动系统
  • WebApp 的价值与实现:从浏览器架构到用户体验优化
  • 用户体验五大要点:从问题到解决方案的完整指南
  • 从ChatGPT家长控制功能看AI合规与技术应对策略
  • DeepSeek-VL 解析:混合视觉-语言模型如何超越传统计算机视觉方法
  • 从15kHz 到20MHz:为什么LTE带宽不能被子载波间隔整除?
  • Android SystemServer 系列专题【篇五:UserController用户状态控制】
  • Nature | 本周最新文献速递