利用 hexo 在 GitHub 搭建个人博客的难点

718 words

基础

  各种前置安装,版本匹配什么的,就不说明了,网上一大堆。

认证

用户名和密码

  跳过,终端上传现在已经不支持用户名和密码连接了。

SSH认证

  • 生成SSH

  都会把秘钥生成在本地用户的隐藏文件夹 ~.ssh 中,文件 ~/.ssh/id_rsa.pub 存的就是。
  没有怎么办?用终端生成一个

1
$ ssh-keygen -t ed25519 -C "your_email@example.com"

  如果不支持 Ed25519 算法的旧系统,使用以下命令。至于什么算法和系统不需要懂,试一下能生成就行。

1
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 添加SSH

  生成后,添加代理,光生成放在那里没用。

1
$ eval "$(ssh-agent -s)"

  我用的是 macOS ,且版本高于 Sierra 10.12.2 ,所以直接手动打开 ~.ssh/config ,然后把文件路径添加进去。
  没有 config 就创建一个

1
$ touch ~/.ssh/config

  然后粘贴下面内容,记得修改文件路径!

1
2
3
4
$ Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
  • 测试SSH

1
$ ssh -T git@github.com

  成功返回如下

1
$ Hi username! You've successfully authenticated, but GitHub does not provide shell access

hexo部署

基础

  基础的设置网上一大堆,不赘述。

repo

  _config.yml 文件是上传前的基础设置。我失败的原因,就在最后的 deploy 参数里。网上很多说什么 token 添加之类的,无论是单独 token 赋值,还是放进 repo 的参数中间,我都失败了。
直接上结论

1
2
3
4
deploy:
type: git
repo: git@github.com:<user_name>/<user_name>.github.io
branch: main

  repo 的参数开头是 git@ !!!我以前的 repo 开头是 https://
  之前说过,这个 blog 在23年就建立了,但25年的我部署失败了,原因是就只这个。前缀 git 是 SSH 专属的方式,既然用 SSH认证,格式总得对,就这个3个破字母花了我一天的时间 !&#@%#@@ 我是无意间点到 Code 下拉才发现的,就是打开仓库后,文件预览最上面的 < >Code 按钮。

图片部署

故事开端

  本地图片嵌入,上传后就失效,除非图片一起上传。但这样本地需要保留图片,且会越来越大。一旦删除图片,下次就不会部署了。因为部署流程是:仓库内容删除 → 上传,原理不是替换。这也是之前在博客园的经验,嵌入图片我都用的网图链接。

个人图片

  个人图片网上没有链接的,所以需要一个中转站,github里建个仓就可以实现,俗称图床。之后步骤流程单独写一篇。用图片展示效果更直接,个人也更习惯用图片说明。

更多参考GitHub官网SSH生成