Hexo网站配置多个SSH-Key一起推送多个远程仓库
我要用SSH
密钥这种链接推送其实不是因为它方便,当然也其实很方便,只是要在不设置Git
密码的情况下,设置Git
密码就要每次都输密码才能推送,所以我后面设置都是留空,这样我一键推送以后就可以去做其他事了。
之前用https这个链接其实也很方便的,至于有的人说每次都要输入密码才可以,我是第一次输入过后面的推送都是不用的,因为现在的win10
系统是可以在本地账号里面保存凭据的,有了凭据肯定是不用每次都输密码了。
所以我要换成SSH
这种链接的推送方式不是方便和不方便的问题了,问题是Github
不能通过https
这种加密链接推送了,几天之前Github
就发邮件给我说这种推送方法不能用了,当时也还没有觉得有多大的问题,后面有一天是真的就推送不了,连用了几次一键推送都是失败的,于是就下定决心在昨天把它换了。
换个推送链接说起来和做起来真的不太难,可是关键的问题是换了之后出问题了,Github
倒是能推送上去了,但是Gitee
这个平台的仓库就推送不上去了,当时也不知道什么原因,就想着把Gitee
这个链接在站点配置文件里注释一下,只保留Github这个单独推送,果然单独推送确实是可以的,那么问题就只在Gitee
这一边了。当然其实我也可以用Gitee
这里依然保持用https
推送,因为那样也是可以的,只是我强迫症犯了,我做事喜欢保持整齐划一,要换自然要两个都换了才行。
在网上查了一下都没有找到什么答案,最后还是去看了Gitee
上面的帮助文档,在文档里面搜了一下关于公钥配置的问题,突然看到可以配置多个SSH-Key
的方法:
1 | a. 一个Gitee |
解决方法:
1.生成一个Gitee
用的SSH-Key
1 | ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa |
1 | ssh-keygen -t ed25519 -C "xxxxx@company.com" -f ~/.ssh/gitee_id_rsa |
2.生成一个Github
用的SSH-Key
1 | ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa |
1 | ssh-keygen -t ed25519 -C "xxxxx@qq.com" -f ~/.ssh/github_id_rsa |
3.在 ~/.ssh
目录下新建一个config
文件,添加如下内容(其中Host
和HostName
填写git
服务器的域名,IdentityFile
指定私钥的路径)。这里的config
文件怎么创建刚开始我也是搞不懂,其实也不难,就是找到~/.ssh
这个文件夹目录,在它里面新建一个文本文档,然后把这个文本文档的名字和后缀改成config
,这样就创建好了这个config
文件,然后用notepad++
打开添加如下内容后保存。
1 | # gitee |
4.添加私钥,分别按顺序输入下面的代码
1 | ssh-agent bash |
注意:电脑重置系统以后就算密钥还在,这几个指令也必须按顺序添加。
5.把公钥添加到远程服务器Gitee和Github
到这里两个平台的SSH-Key
就配置完成了,把两个不同平台的公钥分别添加到各自的平台,用notepad++
分别打开gitee_id_rsa.pub
和github_id_rsa.pub
,打开后复制到添加公钥的地方就可以。
6.用ssh命令分别测试
1 | ssh -T git@gitee.com |
以gitee为例,成功的话会返回下图内容
7.设置推送的配置信息
1 | git config --global user.name "yourname" |
这里要注意Gitee
的公钥必须要添加到个人公钥才可以,具体不能推送的问题应该也不是要配置多个SSH
密钥的这个问题,这个报错的问题是我后面才发现的,那就是我把电脑上创建的公钥放到部署公钥那里去了,发现这个问题是因为配置了两个密钥还是不能推送,后面一看原因就是在这里,因为部署公钥只能下载不能写入,就是这个公钥只能从这里部署到其他服务器上去,而不能用这个公钥从Git
推送写入到仓库里面。
后面才发现后面有一行如下图的小字:
说是要添加个人公钥才能对仓库进行写操作,到这里总算搞清楚问题所在了,那就先把添加到部署公钥这个删了,点了那个蓝色一行小字,跳转过去添加个人公钥,从本地电脑notepad++
上打开的公钥直接复制过去添加确定输入密码就可以了。
重新使用一键编译和推送,然后发现正常推送了,也不需要输入密码的操作了,是的第一次就不需要,这个确实要比https
这种方便很多了,只要一键推送了后面的事都可以不用管了,只要它不推送失败,都没有什么问题,打开网站只要刷新一下就更新了。