前提環(huán)境:node.js git
1.hexo安裝
mkdir MyBlog
cd MyBlog
npm install hexo-cli -g
hexo init
npm install
hexo server
這個時候應(yīng)該在console會顯示:
Hexo is running at http://0.0.0.0:4000/.
這個時候直接訪問該地址,即部署到本地的博客:

2.公鑰和私鑰生成及其配置
進(jìn)入~/.ssh目錄,目錄中可能已經(jīng)存在其他公鑰和私鑰對,現(xiàn)在要專門添加一個新的公私鑰對。
//以指定名稱生成公私鑰對
ssh-keygen -t rsa -C "B" -f B
然后將公鑰添加到github賬號下
這個時候,.ssh目錄下應(yīng)該有多對公私鑰,現(xiàn)在查看密鑰列表
ssh-add -l
密鑰列表里面應(yīng)該沒有剛才新建的密鑰,現(xiàn)在將它添加進(jìn)去
ssh-add ~/.ssh/B
然后再使用ssh-add -l 發(fā)現(xiàn)已經(jīng)添加了,A是我之前添加的。
2048 ac:51:8d:fc:1e:6f:07:ca:3b:3d:c7:0b:79:ee:a1:27 A (RSA)
2048 73:81:8f:03:04:7e:56:a0:cf:22:98:52:47:12:ee:3b /Users/user/.ssh/B (RSA)
現(xiàn)在.ssh目錄中就了2對連接github.com的公私鑰對,現(xiàn)在通過.ssh下config文件去配置host,在不同的情況下通過對應(yīng)的公私鑰對連接github,配置如下:
Host github
HostName github.com
User git
IdentityFile ~/.ssh/A
Host myBlog
HostName github.com
User git
IdentityFile ~/.ssh/B
然后通過如下方式,確認(rèn)以私鑰B連接到github
ssh -T git@myBlog
輸出:
Hi yourName! You've successfully authenticated, but GitHub does not provide shell access.
說明已經(jīng)成功
3.在github上新建repo,以yourName.github.io方式命名(必須),youName是github上的賬號名稱。
4.配置hexo部署到github
vim _config.yml
deploy:
type: git
repository: git@myBlog:yourName/yourName.github.io.git
branch: master
hexo配置文件的語法是冒號后面必須有空格,否則在之后部署的時候會報錯。
然后執(zhí)行如下命令,安裝git部署的工具:
npm install hexo-deployer-git --save
最后生成靜態(tài)文件并部署:
hexo g -d
訪問yourName.github.io可以查看最后部署到github上的效果
問題解答:
1.執(zhí)行hexo g -d的時候,遇到:
Error: Permission denied(publickey).
fatal: Could not read from remote repository
解決辦法:
1.先看一下.ssh目錄下的配置文件config
cd ~/.ssh
vim config
看一下host 別名配置的是什么,比如
Host github
? HostName github.com
? user git
? IdentityFile ~/.ssh/zhengzhiwenBlog
host的別名就是github
通過ssh -T git@github 看一下是否能夠連接,如果不能連接,說明github賬號下沒有配置公鑰,先去github上配置公鑰
2.確定可以通過ssh連接github之后:
查看一下系統(tǒng)ssh-key的代理:
ssh-add -l
如果出現(xiàn) The agent has no identities。說明沒有代理,需要添加,按上文中提到的方式:
ssh-add ~/.ssh/zhengzhiwenBlog
得到提示:
Identity added: /Users/zhengzhiwen/.ssh/moma (/Users/zhengzhiwen/.ssh/zhengzhiwenBlog)
說明添加成功
再試試hexo g -d命令,進(jìn)行部署。