多个SSH连接配置之HEXO部署
本文作为个人笔记,内容不过多展开说明。
如果只是来找直接的解决方案,可以参考《本地有多个github账号如何使用hexo部署到特定账号》这篇文章。
这里只针对Hexo部署时在多个SSH配置时一些处理,关于多个Github账号的搭配多个SSH配置的问题请自行谷歌了解。
多个SSH配置是指的是在用户家目录下.ssh\config文件中(C:\Users\good_boy\.ssh\config
)文件中配置了多个SSH的连接。
之前在《如何使用SSH配置文件进行SSH连接》已经介绍了多个SSH配置的配置方法。
但当我们这样子配置之后,会发现在Hexo部署的时候会出现错误。因为Hexo在提交到仓库的时候不知道使用哪个SSH配置。
我们要解决的问题让仓库地址跟我们的SSH配置中的Host主机对应上,这样子他就会去找对应的SSH配置了。
听起来可能不太明白,其实很简单。
例如现在我的电脑上有两个Github账号,然后SSH配置文件的连接配置为:
1 | Host github_1 |
配置了多个SSH链接,这时候我们如果还是以git作为github.com这个主机的User去连接那么就会失败。
$ ssh -T git@github.com
Permission denied (publickey).
这是因为不能确定具体要去使用哪个配置文件。这时候我们就需要指定具体的Host了,也就是你得通过ssh github_1
这样子的方式来连接。
$ ssh -T github_1
Hi good_boy! You’ve successfully authenticated, but GitHub does not provide shell access.
一般情况下,我们的Hexo配置文件_config.yml中Deploy部分配置如下:
1 | deploy: |
部署仓库的地址中有 git@github.com 这么一段,这就是SSH连接的用户名和主机。
这样部署,当进行ssh通讯的时候就相当于 ssh -T [email protected]
,所以是会导致连接失败的。
解决方法就是把仓库SSH地址:[email protected]:good_boy/good_boy.github.io.git
中的 [email protected]
替换成对应的SSH配置的主机,冒号后面的就是Github的用户名,这个不需要改。
例如这里HEXO部署到的Github账号需要使用github_1这个SSH配置来进行SSH连接验证。
那么部署的仓库地址就需要写成:repo: github_1:good_boy/good_boy.github.io.git
这样子Hexo在部署进行SSH连接的时候就会知道使用哪个SSH配置了。
这样的做法也适用于部署到多个Git仓库,例如同时部署到了Github和Coding上,那么SSH连接配置和Hexo的配置就是下面这样子:
SSH连接配置
1 | Host coding_good_boy |
Hexo部署配置
1 | deploy: |