解决“致命错误:无法读取远程仓库”问题

从昨天开始,我的博客出了故障。在终端输入hexo d,报错:

错误信息

我此前没有进行过任何修改,所以确定问题不是出在博客文件夹里的配置。初步判断是网络问题,但关闭或打开梯子、更换节点、更换梯子,都没有效果。于是开始瞎折腾。试了但没有效果的办法有:

  • 重新设置用户名和邮箱
    • git config --global user.name "yourname"
    • git config --global user.email"your@email.com"
  • 重设SSH Key(参考这个教程
  • 更新Hexo版本,重新安装所有npm插件
  • 重新添加SSH私钥路径
    • ssh-add /path/to/your/private/key

折腾了一天,还是没有解决,很沮丧。男朋友报告他那边git pull出现了相同的问题,但是另一个用Hexo搭建博客的朋友却没有出现这个问题,非常奇怪。

过了一会,男朋友说问题解决了,是机场把端口22封禁了,需要把SSH端口强制改成443。于是我照葫芦画瓢。在macOS的/Users/{用户名}/.ssh文件夹下(需要开启“显示隐藏文件”)建立一个叫config的文件,添加如下内容:

Host github.com
Hostname ssh.github.com
IdentityFile /Users/chumiaochen/.ssh/id_rsa
User git
Port 443
ProxyCommand nc -v -x 127.0.0.1:7890 %h %p

发现还是不行,错误信息如下:

ssh_dispatch_run_fatal: Connection to UNKNOWN port 65535: Broken pipe

喂给GPT,叫我重新添加一下到私钥的路径:

ssh-add /Users/{用户名}/.ssh/id_rsa

照做了。再次hexo d,出现新的错误:

致命错误:远端意外挂断了)

(这里不知道为什么有个右括号)

再次询问GPT,叫我在config文件里再添加两句,添加后完整文件内容如下:

Host github.com
Hostname ssh.github.com
IdentityFile /Users/chumiaochen/.ssh/id_rsa
User git
Port 443
ProxyCommand nc -v -x 127.0.0.1:7890 %h %p
TCPKeepAlive yes
ServerAliveInterval 120

再次hexo d,问题解决。