Hexo SSH密钥配置
HDUZN

配置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
2
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yourusername/.ssh/id_rsa): [Press enter]

直接回车,则将密钥按默认文件进行存储。
此时提示输入特定的文件名,比如:hexo_rsa
(注:建议还是输入特定的名字,不然就是默认的id_rsa文件,如果你有多个SSH需要管理的,就比较麻烦了。)

接着,根据提示,你需要输入密码和确认密码

说到这里,如果你很放心,其实可以不用密码,就是到输密码的地方,都直接回车确认密码,继续直接回车。(所谓的最安全的密码,就是没有密码 哈哈)。
相关提示如下:

1
2
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

输入密码完成之后,屏幕会显示如下信息:

1
2
3
4
Your identification has been saved in /c/Users/yourusername/.ssh/hexo_rsa.
Your public key has been saved in /c/Users/yourusername/.ssh/hexo_rsa.pub.
The key fingerprint is:
SHA256:GI************************U your_email@example.com

可以看到在目录:C:\Users\yourusername.ssh 中已经有hexo_rsa 和 hexo_rsa.pub 文件了。
如果没有自定义名字,则会在当前目录下生成 id_rsa.pub(公钥)和 id_rsa(私钥)文件。

3.SSH密钥配置

如果你的服务器上只用一个,那就忽略此步。
如果服务器上有多个SSH的,需要在本机的配置文件中配置一下。
用记事本程序打开 ~/.ssh 目录(C:\Users\yourusername.ssh)中的config文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Host 111.**.**.333
HostName 111.**.**.333
User root

Host code_rsa
HostName 122.44.21.213
IdentityFile ~/.ssh/code_rsa
PreferredAuthentications publickey
User root
Host 122.44.21.213
HostName 122.44.21.213
IdentityFile ~/.ssh/hexo_rsa
PreferredAuthentications publickey
User ubuntu

Host:站点别名,方便命令行使用
HostName:站点名(服务器ip或域名)
PreferredAuthentications:优先使用公钥连接
IdentityFile:私钥路径

命令行测试以上两个SSH:

1
2
ssh -t git@code_rsa
ssh -t git@122.44.21.213

以上ip地址换成你自己服务器的ip地址。

第二步、在服务器上添加公钥

如果你是Github pages的,直接看这篇文章 【小白教程】免费建立静态博客网站(Github+Hexo) 中配置SSH密钥的部分就行。

如果是用别的云服务器的,在云服务器上建了Git仓库和Nginx托管文件目录的(参考这篇文章 Hexo博客部署到云服务器(Ubuntu)上 ),但又没在服务器上新建用户的话,建议新建一个用户,专门给Hexo博客用。(如果你这个服务器只做一个博客用,那就用不着新建用户了)

如果前面创建Git仓库和Nginx托管文件目录时没建新用户,也没关系,只需要创建个新用户,然后把这两个目录的所有权权限给这个新用户就行。

1.新建一个git用户

1
2
sudo useradd -m git
sudo passwd git

ubuntu加上-m参数,会在 /home 目录中建出对应的用户目录,即会有/home/git目录;否则没有。

2.把Git仓库和Nginx托管文件目录权限都给git用户

1
2
sudo chown -R git:git /var/repo/
sudo chown -R git:git /var/www/hexo

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
2
cd ~
mkdir .ssh

5.在.ssh目录下创建authorized_keys文件

这里并不直接创建文件,直接把 hexo_rsa.pub 移动到 .ssh目录后,重命名为authorized_keys就行了。并用 chmod修改目录的权限。

1
2
3
4
mv hexo_rsa.pub .ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

6.测试

在本地输入下面的命令,:

1
ssh -t git@122.44.21.213

以上ip地址换成你自己服务器的ip地址。
能登录进去,说明已成功完成SSH配置。

第三步、修改本机Hexo配置文件

打开Hexo目录下 _config.yml配置文件。
把deploy配置内容改为(repo中原来的用户名改为git):

1
2
3
4
deploy:
type: git
repo: git@122.44.21.213:/var/repo/hexo_static.git
branch: master

以上ip地址换成你自己服务器的ip地址。

再用 hexo deploy时,就不需要再输入用户的密码了。

  • 本文标题:Hexo SSH密钥配置
  • 本文作者:HDUZN
  • 创建时间:2022-05-01 19:56:18
  • 本文链接:http://hduzn.cn/2022/05/01/Hexo-SSH密钥配置/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论