Spawn_failed处理报告

Spawn_failed处理报告

一、错误说明

在上传Hexo博客到搭建到 Github 的项目时,已经使用 hexo s 预览成功了,但在 hexo d 部署到个人博客的时候出现了以下问题:


这种情况说明,Github公钥出现错误,重新添加公钥即可

1
2
3
4
5
6
7
公钥:
使用https协议,每次pull, push都要输入密码,相当的烦。
使用git协议,然后使用ssh密钥。这样可以省去每次都输密码。

公钥我们一般是给服务器的,他们到时候在权限中加入我给的公钥,然后当我从远地仓库中下载项目的时候,我在 git clone xxx 的时候,那个服务器我通过他的绑定的公钥来匹配我的私钥,这个时候,如果匹配,则就可以正常下载,如果不匹配,则失败。

大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。

二、修改配置

按照提示,先查看自己的博客配置文件 _config.yml ,在文件最底处修改内容如下:

1
2
3
4
deploy: 
type: git
repo: git@github.com:yourname/yourname.github.io.git # yourname,自己Github用户名
branch: master # 设置分支管理

三、添加公钥

3.1 测试链接

在博客目录,打开 Git Bash Here 输入以下代码

1
ssh -T git@github.com

如下图结果,Permission denied(publickey) ,证明确实缺少公钥。

3.2 添加公钥

首先在本地创建 SSH Keys

1
ssh-keygen -t rsa -C "yourmail"   # 后面为Github注册邮箱

注意在 Overwrite(y/n)? 后添加 y 后回车,其它一直回车,生成 SSH Keys

根据上图找到路径 xxx/.ssh/id_rsa.pub ,打开文件,复制全部文本
进入自己的Github,找到SSH/Add new,输入SSH Keys,将复制来的内容粘贴在 Key 中。保存!

3.3 重新部署

先测试SSH连接 :

1
ssh -T git@github.com


成功连接!重新部署项目hexo d

部署成功!(如果还是无效的话,见四)

四、ssh超时错误

笔者在添加公钥的同时,设置了.ssh配置文件config中的 Port 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ git clone git@github.com:xxxxx/xxxx.git my-awesome-proj
Cloning into 'my-awesome-proj'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

$ # This should also timeout
$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out

$ # but this might work
$ ssh -T -p 443 git@ssh.github.com
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.

$ # Override SSH settings

$ vim ~/.ssh/config //没有该文件,就新建一个
```
# Add section below to it
Host github.com
Hostname ssh.github.com
Port 443
```
$ ssh -T git@github.com
Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.

$ git clone git@github.com:xxxxxx/xxxxx.git my-awesome-proj
Cloning into 'my-awesome-proj'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), 22.90 KiB | 4.58 MiB/s, done.

评论