配置SSH密钥,可以让本地Git项目与远程的服务器建立联系,让我们在本地写了代码之后直接通过Git操作就可以实现本地代码库与服务器上的代码库同步。
简单的说,就是每次运行 hexo deploy
部署Hexo到服务器上的时候不需要再输入密码了。
第一步、在本机创建一对新的SSH密钥(keys)
1.查看本机是否存在SSH keys
打开【Git Bash】,并运行:
1 | cd ~/.ssh |
如果本机已经存在ssh公钥和私钥,可以略过这一步,直接进入第二步操作(默认的公钥文件是id_rsa.pub)。当然也可以再创建一对新的SSH密钥专用来用给Hexo用的。
2.创建新的SSH密钥
1 | ssh-keygen -t rsa -C "your_email@example.com" |
注意上面的邮箱是自己的邮箱地址,按这个邮箱地址会创建一对密钥。
1 | Generating public/private rsa key pair. |
直接回车,则将密钥按默认文件进行存储。
此时提示输入特定的文件名,比如:hexo_rsa
(注:建议还是输入特定的名字,不然就是默认的id_rsa文件,如果你有多个SSH需要管理的,就比较麻烦了。)
接着,根据提示,你需要输入密码和确认密码
说到这里,如果你很放心,其实可以不用密码,就是到输密码的地方,都直接回车确认密码,继续直接回车。(所谓的最安全的密码,就是没有密码 哈哈)。
相关提示如下:
1 | Enter passphrase (empty for no passphrase): [Type a passphrase] |
输入密码完成之后,屏幕会显示如下信息:
1 | Your identification has been saved in /c/Users/yourusername/.ssh/hexo_rsa. |
可以看到在目录:C:\Users\yourusername.ssh 中已经有hexo_rsa 和 hexo_rsa.pub 文件了。
如果没有自定义名字,则会在当前目录下生成 id_rsa.pub(公钥)和 id_rsa(私钥)文件。
3.SSH密钥配置
如果你的服务器上只用一个,那就忽略此步。
如果服务器上有多个SSH的,需要在本机的配置文件中配置一下。
用记事本程序打开 ~/.ssh
目录(C:\Users\yourusername.ssh)中的config文件。
1 | Host 111.**.**.333 |
Host:站点别名,方便命令行使用
HostName:站点名(服务器ip或域名)
PreferredAuthentications:优先使用公钥连接
IdentityFile:私钥路径
命令行测试以上两个SSH:
1 | ssh -t git@code_rsa |
以上ip地址换成你自己服务器的ip地址。
第二步、在服务器上添加公钥
如果你是Github pages的,直接看这篇文章 【小白教程】免费建立静态博客网站(Github+Hexo) 中配置SSH密钥的部分就行。
如果是用别的云服务器的,在云服务器上建了Git仓库和Nginx托管文件目录的(参考这篇文章 Hexo博客部署到云服务器(Ubuntu)上 ),但又没在服务器上新建用户的话,建议新建一个用户,专门给Hexo博客用。(如果你这个服务器只做一个博客用,那就用不着新建用户了)
如果前面创建Git仓库和Nginx托管文件目录时没建新用户,也没关系,只需要创建个新用户,然后把这两个目录的所有权权限给这个新用户就行。
1.新建一个git用户
1 | sudo useradd -m git |
ubuntu加上-m
参数,会在 /home 目录中建出对应的用户目录,即会有/home/git目录;否则没有。
2.把Git仓库和Nginx托管文件目录权限都给git用户
1 | sudo chown -R git:git /var/repo/ |
3.把本机上的hexo_rsa.pub 公钥文件上传到服务器上(/home/git)
用什么方法上传,都可以。我的本机是windows的,有xshell和xftp,直接就用git用户登录后,上传至/home/git目录。(即有了文件 /home/git/hexo_rsa.pub)
4.创建~/.ssh 目录(git用户)
在服务器中创建ssh,是为了把本机的 hexo_rsa.pub 中的文件内容全部添加到 authorized_keys 文件中。(即 ~/.ssh/authorized_keys
文件)
1).服务器上切换到 git用户
1 | su git |
输入密码后登录。(输入exit
命令即可退出git用户)
2).创建~/.ssh 目录
1 | cd ~ |
5.在.ssh目录下创建authorized_keys文件
这里并不直接创建文件,直接把 hexo_rsa.pub 移动到 .ssh目录后,重命名为authorized_keys就行了。并用 chmod修改目录的权限。
1 | mv hexo_rsa.pub .ssh/authorized_keys |
6.测试
在本地输入下面的命令,:
1 | ssh -t git@122.44.21.213 |
以上ip地址换成你自己服务器的ip地址。
能登录进去,说明已成功完成SSH配置。
第三步、修改本机Hexo配置文件
打开Hexo目录下 _config.yml
配置文件。
把deploy配置内容改为(repo中原来的用户名改为git):
1 | deploy: |
以上ip地址换成你自己服务器的ip地址。
再用 hexo deploy
时,就不需要再输入用户的密码了。
- 本文标题:Hexo SSH密钥配置
- 本文作者:HDUZN
- 创建时间:2022-05-01 19:56:18
- 本文链接:http://hduzn.cn/2022/05/01/Hexo-SSH密钥配置/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!