跳到主要内容

hexo升级及升级后的问题


已读 0%
本篇目录
阅读设置
正文字号
18

设置仅保存在当前浏览器。

hexo升级及升级后的问题

hexo升级

升级前先备份源码、主题改动、_config.yml、package.json 和 package-lock.json,有 Git 时先保存当前状态。Node.js 应满足目标 Hexo 和插件的要求,不必一律换成最新版本。

在博客根目录查看现状:

node --version
npm --version
npx --no-install hexo version
npm outdated

npm outdated 有待更新依赖时可能返回非零退出码,这不等于检查命令无法运行。先核对目标版本与主题、插件的兼容性,再更新选定依赖。Hexo 8 当前要求 Node.js 20.19.0 或更高版本;例如目标确定为 Hexo 8 时:

npm install hexo@8
npx --no-install hexo version
npx --no-install hexo generate

这里的 hexo@8 只是明确目标版本的示例,不应套用于所有旧项目。不要默认用 ncu -u 一次改动全部依赖;升级后先完成本地构建与页面检查,再单独决定部署。本博客还可以运行 npm run check 检查文章结构和生成页面。

升级后的问题

升级后执行hexo d部署提交时报错

at ChildProcess.<anonymous> (D:\blog\node_modules\_hexo-util@1.9.0@hexo-util\lib\spawn.js:51:21)
    at ChildProcess.emit (events.js:310:20)
    at ChildProcess.cp.emit (D:\blog\node_modules\_cross-spawn@7.0.2@cross-spawn\lib\enoent.js:34:29)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)

这时候你需要执行ssh -T git@github.com测试是否连接正常,若失败报错

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be
eavesdropping on you right now (man-in-the-middle attack)! It is also
possible that a host key has just been changed. The fingerprint for the RSA
key sent by the remote host is [truncated]. Please contact your system
administrator. Add correct host key in /home/username/.ssh/known_hosts to
get rid of this message. Offending RSA key in
/home/username/.ssh/known_hosts:24 Password authentication is disabled to
avoid man-in-the-middle attacks. Keyboard-interactive authentication is
disabled to avoid man-in-the-middle attacks. Agent forwarding is disabled to
avoid man-in-the-middle attacks.

这个错误是远端主机身份校验失败,不等于自己的登录密钥失效。先确认连接的主机、端口、DNS 和代理没有变化,再通过可信渠道核对 GitHub 公布的 SSH 主机指纹:

GitHub 的 SSH 主机密钥指纹

查看当前记录:

ssh-keygen -F github.com

只有确认远端密钥发生了可信变更时,才移除对应主机的旧记录并重新连接:

ssh-keygen -R github.com
ssh -T git@github.com

确认新指纹匹配后才接受;非标准端口的记录使用 [主机]:端口 格式。不要删除整个 known_hosts,它还保存着其他服务器的信任记录。

如果主机校验通过后变成 Permission denied (publickey),再排查 GitHub 账号的公钥、当前私钥及 ssh-agent。GitHub 的 SSH 测试可能在认证成功时仍返回退出码 1,应结合认证成功提示判断。验证完成后再按原来的部署流程操作。


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录