三个月没整博客,上线一顿狂改,最后部署的时候到deploy环节出错了,报错信息如下:

1
2
3
4
5
6
7
fatal: unable to access 'https://github.com/Xihan333/Xihan.github.io.git/': Failed to connect to github.com port 443 after 21052 ms: Timed out
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (D:\mycode\GitHub\Blog\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (node:events:513:28)
at cp.emit (D:\mycode\GitHub\Blog\node_modules\cross-spawn\lib\enoent.js:34:29)
at ChildProcess._handle.onexit (node:internal/child_process:293:12)

初一看,这不就是代理的问题么,把没开的猫猫打开,再d!

然后一直在报错……总之大抵是代理的问题,但又不知道具体在哪里(抓狂.jpg)

最初发现这个地方没有对上(代码为正确版本)

image-20240120232804281

修改后重试,依旧报错。。。

网上查了一些方法,大多是修改repo部分的url,有改成用户名:密码@github.com的,但是没什么用,试了一种改成git@github.com:YourName/YourName.github.io.git报错信息确实改变了

image-20240120235058219

为什么不早点告诉我是ssh的问题啊啊啊,果然,登上去一看,空空如也

直接暴力解决:重新配置密钥

  1. git bash 窗口依次输入:(注意:双引号里改为你的Github的名字和邮箱)

    1
    2
    git config --global user.name "MagicConchCpp"
    git config --global user.email "csuzhangyang@gmail.com"
  2. 生成新秘钥:

    1
    ssh-keygen -t rsa -C "csuzhangyang@gmail.com"

    选择文件路径,然后遇到下面这个直接回车。

    1
    2
    3
    $ ssh-keygen -t rsa -C "csuzhangyang@gmail.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/lenovo/.ssh/id_rsa):

    文件已经存在,是否重写?输入 y ,回车。

    1
    2
    /c/Users/lenovo/.ssh/id_rsa already exists.
    Overwrite (y/n)? y

    然后设置密码什么的,不用管,直接两下回车。

  3. 新秘钥保存在 /c/Users/lenovo/.ssh/id_rsa.pub
    打开这个文件,复制其中的的内容。
    github 中,打开 setting -> SSH and GPG keys 。删除原来的,把新的复制进去,即解决。重新执行 hexo d

你以为……到这里就结束了吗?

没用!!!!!!我要疯了啊啊啊啊啊

既然常规方法都没用,便检查一下git和github之间的链接吧(怎么现在在检查啊QAQ)

在git bash输入

1
ssh -T git@github.com

当看见它迟迟没有反应就知道多半得寄,果不其然

1
ssh: connect to host github.com port 22: Connection timed out

git连接超时,找到git的安装目录,用记事本或者VS啥的打开/etc/ssh/ssh_config文件,在末尾加入:

1
2
3
4
5
6
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

再测试一遍!

image-20240121005906937

别急,这不是还有个回车,点了……寄了

image-20240121005948192

查了一下fail的原因,原因是在主机子系统每次成功ssh连接远程操作,都会把你每个你访问过计算机的公钥(public key)都记录在主机的目录/Users/icarus/.ssh/known_hosts下,当下次访问相同子机服务器时,会核对公钥。如果公钥不同,会发出警告,避免你受到DNS Hijack之类的攻击。

虚惊一场,原因是在最后一行应该输入yes后再回车,不然的话是没法继续写入的,不过因此了解了一些关于ssh的知识,也还不错(

image-20240121011247176

接下来,就该尝试重新部署了

为什么我的眼里常含泪水,因为我对bug爱得深沉QAQ

image-20240121011545952

总结

多写博客,不用的话数据就要生锈啦

崩溃的commit记录

ee449f40be0622b40ec1ca5492322244