如何生成 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://www.pswp.cn/pingmian/96313.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96313.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/96313.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用加密算法之 AES 简介及应用

相关系列文章 常用加密算法之 SM4 简介及应用常用加密算法之 RSA 简介及应用 引言 AES&#xff08;Advanced Encryption Standard&#xff0c;高级加密标准&#xff09;是一种​​广泛使用的对称分组加密算法​​&#xff0c;它使用相同的密钥进行加密和解密操作&#xff0c…

Java面试问题记录(一)

一、Java 核心基础与进阶1、我们知道 Java 中存在 “值传递” 和 “引用传递” 的说法&#xff0c;你能结合具体例子&#xff0c;说明 Java 到底是值传递还是引用传递吗&#xff1f;这背后涉及到 JVM 中哪些内存区域的交互&#xff1f;Java中只有值传递&#xff0c;不存在引用传…

Redis 主从复制、哨兵与 Cluster 集群部署

文章摘要 本文基于 VMware 虚拟机环境&#xff0c;详细讲解 Redis 高可用架构的核心组件与部署流程&#xff0c;涵盖三大核心模块&#xff1a;Redis 主从复制&#xff08;实现数据备份与读写分离&#xff09;、Redis 哨兵&#xff08;基于主从复制实现故障自动转移&#xff0c;…

ElementUI 中 validateField 对部分表单字段数组进行校验时多次回调问题

目录 方案一&#xff1a;循环调用 Promise.all 合并结果 方案二&#xff1a;直接传入数组字段 总结 在实际业务中&#xff0c;我们有时只需要对表单的部分字段进行校验。ElementUI 提供的 validateField 方法支持单个字段&#xff0c;也支持字段数组&#xff0c;但在使用时…

Visual Studio 2026 震撼发布!AI 智能编程时代正式来临

Visual Studio 2026 震撼发布&#xff01;AI 智能编程时代正式来临 Visual Studio 2026 Insider图标 开发者们的开发环境即将迎来前所未有的智能革命&#xff0c;微软用Visual Studio 2026 重新定义了编码体验。 2025年9月10日&#xff0c;微软正式推出了Visual Studio 2026 In…

Gamma AI:高效制作PPT的智能生成工具

你有没有过这种崩溃时刻&#xff1f;领导让你下午交一份产品介绍 PPT&#xff0c;你打开模板网站翻了半小时没找到合适的&#xff0c;好不容易选了个模板&#xff0c;又得手动调整文字间距、搭配图片&#xff0c;光是把数据做成图表就花了一小时&#xff0c;最后赶出来的 PPT 还…

Python副业新玩法:用Flask搭小程序后端,躺赚被动收入的秘密

凌晨1点&#xff0c;林浩合上电脑时&#xff0c;手机弹出一条微信消息——是上周帮一家社区水果店搭的小程序后端&#xff0c;商家发来了当月的服务费到账提醒。他靠在椅背上笑了&#xff1a;这是这个月第8笔“睡后收入”&#xff0c;加起来刚好覆盖了下个月的房贷。半年前&…

基于PyQt5和阿里云TTS的语音合成应用开发实战[附源码】

项目概述 本文将详细介绍一个基于PyQt5图形界面框架和阿里云TTS(Text-to-Speech)服务的语音合成桌面应用程序的开发过程。该应用提供了完整的文字转语音功能,包括多音色选择、参数调节、实时试听、语速调节和音频下载等特性。 技术栈 前端界面: PyQt5 语音合成: 阿里云TTS服…

基于esp32c3 rust embassy 的墨水屏程序

EPD Reader 基于ESP32-C3的电子墨水屏阅读器&#xff0c;支持ap 配网、sntp 时间同步、txt阅读、天气预报、显示节假日信息、农历显示、自动休眠、web配置等功能。这是在另一个项目 一个rust embassy esp32c3 的练习项目-CSDN博客的基础上修改的 。 界面比较粗糙&#xff0c;以…

Spring 单例测试及线程安全

创建一个账户类 package com.duanhw.demo22.account;import org.springframework.beans.factory.annotation.Value;//Service public class AccountService {Value("1000")private Integer balance;//存款public void deposit(Integer amount){int newbalance balanc…

【vue】组件宽度调整失效后,调整的方法

父容器布局限制 若组件放置在栅格布局&#xff08;如display: grid&#xff09;或弹性容器中&#xff0c;父元素的宽度限制可能导致子组件宽度失效。解决方案是为父容器设置明确的宽度&#xff0c;或通过百分比布局实现自适应16。例如&#xff1a; <div style"width:…

Java 在Word 文档中插入页眉页脚:一份实用的编程指南

在现代企业应用中&#xff0c;Java 开发者经常需要处理各种文档操作&#xff0c;其中对 Word 文档的自动化处理尤为常见。无论是生成报告、合同还是其他商业文档&#xff0c;页眉页脚作为文档结构的重要组成部分&#xff0c;承载着公司 Logo、页码、版权信息等关键内容。手动添…

深入解析Dart虚拟机运行原理

Dart虚拟机运行原理 一、Dart虚拟机 1.1 引言 Dart VM是一种虚拟机&#xff0c;为高级编程语言Dart提供执行环境&#xff0c;但这并意味着Dart在D虚拟机上执行时&#xff0c;总是采用解释执行或者JIT编译。 例如还可以使用Dart虚拟机的AOT管道将Dart代码编译为机器代码&#xf…

光谱相机在AI眼镜领域中的应用

一、核心应用场景‌健康监测系统‌‌实时生理指标分析‌&#xff1a;通过眼周皮肤光谱特征&#xff0c;监测血氧(SpO₂)和血红蛋白变化&#xff0c;精度可达2%‌血糖无创检测‌&#xff1a;近红外光谱(900-1700nm)分析泪液成分&#xff0c;临床测试相关系数R0.87‌疲劳度评估‌…

如何通过url打开本地文件文件夹

安装部署 https://github.com/jixn-hu/notion_link_opener 这是我自己开发的一个后端服务&#xff0c;要一直开着 部署好后 会打开一个前端页面填下好你文件或者文件夹 点击生成短链就可以直接打开本地的文件夹了

第一篇:如何在数组中操作数据【数据结构入门】

记录以下自己重温数据结构的笔记&#xff0c;附带自己实现的C代码&#xff0c; 其中部分Python代码是网上教程里的&#xff0c;顺手粘贴过来&#xff0c;做一对比/ &#xff08;Python确实简洁&#xff0c;但是C更好理解不是吗哈哈哈&#xff09;数组的定义 数组&#xff1a;线…

基于STM32的单片机开发复盘

硬件介绍 底盘&#xff1a;幻尔阿克曼底盘&#xff1b;2个直流霍尔电机、1个PWM舵机开发板&#xff1a;幻尔Ros Controller V1.2&#xff08;STM32F407VET6&#xff09;电源&#xff1a;因为是学习阶段&#xff0c;没有配电池&#xff0c;使用120W可调电源&#xff08;3V~12V&a…

面试常问:注册中心宕机,远程调用还能成功吗?

在微服务架构里&#xff0c;注册中心&#xff08;像 Nacos、Eureka、Consul 等&#xff09;是服务发现与治理的核心。可要是注册中心突然宕机&#xff0c;微服务间的远程调用还能顺利进行吗&#xff1f;这是面试时很常被问到的问题&#xff0c;下面我们就来深入剖析。一、远程调…

《用 Python 和 Matplotlib 绘制折线图:从入门到实战的可视化指南》

《用 Python 和 Matplotlib 绘制折线图:从入门到实战的可视化指南》 一、引言:数据可视化的力量,从一张折线图开始 在我多年的开发与教学经历中,最常被问到的问题之一是:“如何让数据更直观?”我的答案始终如一:用图说话。而在众多图表类型中,折线图以其简洁、清晰的…

Seate的XA模式和AT模式

目录 一、XA模式 【1】两阶段提交 【2】Seata的XA模型 【3】优缺点 【4】实现XA模式 二、AT模式 【1】Seata的AT模型 【2】AT与XA的区别 【3】脏写问题 【4】优缺点 【5】实现AT模式 一、XA模式 XA 规范 是 X/Open 组织定义的分布式事务处理&#xff08;DTP&#xf…