hexo d引发的思考

引发思考的导火索

  最近用github pages和hexo搭建了自己的博客,每次本地写好后,需要同步到github上,这需要执行下面一系列的命令

1
2
3
$ hexo clean
$ hexo g && gulp
$ hexo d

  为了图个方便,于是我写了一个blog.sh的脚本文件,将上面的命令添加在脚本中,每次想要更新博客的时候直接执行脚本文件就可以了。但是令我很烦恼的是每次执行到hexo d的时候就需要输入密码,对于我这个懒癌深入骨髓的人来说是无法容忍的。

问题出在哪里

  我也这么问过自己。但是对于被git工具惯坏的我来说,对于git的一些命令行着实不太会玩。我在google上搜索了相关的问题,得到的答案都是不要使用https的方式,使用ssh的方式,然后再将生成的ssh公钥配置在github上就不用每次输入密码了,但实际上我就是这么做的。于是我去询问了八哥,他说你是不是给ssh设置了密码,仔细一想,好像还真是,生成ssh的时候,我还确实设置过密码。于是我重新生成了ssh,然后将公钥更新到github上,再次执行blog.sh脚本文件的时候就没有出现过需要输入密码的情况了。

好奇心驱使

  这个简单的问题确实是很快得到了解决,但是好奇心驱使的我还有几个问题需要弄明白。

  1. ssh的密码是否是必要的?
  2. https方式和ssh方式的区别?

ssh的密码是否是有必要的

  当我们通过ssh的方式试图建立连接的时候,如果客户端的私钥和服务端的公钥能够匹配上,那么这个客户端才会被授予访问权限。ssh公钥可以确保在没有密码的情况下安全的使用,但是如果你的电脑被黑了,别人就可以不受限制的通过你的电脑和服务端进行通信,所以如果你不觉得麻烦的话,最好还是给ssh设置一个密码吧。

如何生成ssh

  在此记录下如何生成ssh密钥,免得每次都得google。

1
$ ssh-keygen -t rsa -C "你的邮箱"

  执行上面的脚本,如果你嫌麻烦就一路回车就好,生成的ssh密钥是没有密码的。这样就保证每次提交git的时候不用输入密码。

1
$ pbcopy < ~/.ssh/id_rsa.pub

  然后通过上面的命令,将ssh的公钥copy出来,最后将其粘贴到github上就可以了。

https方式和ssh方式的区别

  这个问题产生是我发现github上clone代码的地方有两种方式,一种是https,一种是ssh。于是我尝试用https的方式clone了代码,然后修改了代码再push到github上,但是发现每次提交代码的时候我都需要输入用户名和密码,而通过ssh的方式我什么都不用管了。

  因为使用https的时候,服务器是不知道这个请求由谁发起的,所以得每次输入用户名和密码进行验证,这样服务器才能知道执行push操作的是谁,有没有权限进行push。

  而使用ssh方式服务器可以根据私钥和公钥是否匹配来知道你是谁,是否有权限进行push操作。

打破砂锅问到底

  那我有没有一种方式是在使用https的时候也不用输入账户名和密码呢?其实也是有方式的,将用户名和密码保存在本地。

1
$ git config credential.helper store

  当我们再提交代码的时候,会将repo的url和用户名密码以 明文 的方式保存在根目录下面的 .git-credentials 文件中,你可以通过下面这种方式打开这个文件。

1
$ open ~/.git-credentials

  那么问题又来了,有没有加密方式去保存这个东西,嗯,于是我又去google了下,找到如下的命令

1
$ git config --global credential.helper osxkeychain

  这会告诉git用 osxkeychain 这种方式进行保存。可以参考这个链接

总结

  这确实是一个简单的问题,但是让我明白了很多新东西。怀揣着疑问的态度去看待事情,你会发现很多有趣的东西。同时告诫自己以后要多用命令行,不能被工具惯坏了!!!!!!   

本文标题:hexo d引发的思考

文章作者:严方雄

发布时间:2017-12-07

最后更新:2018-09-13

原始链接:http://yanfangxiong.com/2017/12/07/hexo-d引发的思考/

0%