迁移hugo博客到私有库,以及使用ssh密钥等操作

迁移hugo博客到私有库,以及使用ssh密钥等操作

迁移hugo博客源码到私有库,和以前hexo一样,鉴于原来写的太简略,补充一点内容。水水!

主要操作

  • 创建hugo源码私有库(这步略)
    • 私有库要全空:不创建 README , .gitignore , license 避免分支合并异常。
  • 生成ssh密钥
  • 取消原来的仓库连接,连接到私有库
  • 修改配置(主要是github-action.yml)
  • 测试

生成密钥

一般来说原本就有,不过经过查验,全都在用,所以生成新的。

密钥存放路径一般在 ~/.ssh ,其中公钥在 id_rsa.pub ,私钥在 id_rsa ,主要是看后缀,名字都是可以改的。

https 和 SSH 的区别:

1、前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。

2、https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

步骤:

在开始菜单中打开git下的git bash(当然,在其他目录下打开git bash也是一样的):

如果在其他目录生成密钥,输出的密钥文件就会在当前目录,要存放到系统常用目录,请

1
cd ~/.ssh

然后执行

1
ls -al ~/.ssh 

能进入并输出则说明已经生成过密钥,但是一般来说都是在用的密钥,所以还是要重新生成。

如果不能进入到.ssh文件目录下,则检测下自己之前有没有配置用户名和邮箱:

1
git config user.name和git config user.email(直接分别输入这两个命令)

如果之前没有创建,则执行以下命令:

1
2
git configglobal user.name 'xxxxx'
git configglobal user.email 'xxx@xx.xxx'

生成秘钥

1
ssh-keygen -t rsa -C '上面的邮箱' -f rsa_name

代码参数含义:

-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。(可选,默认 id_rsa ,默认的话会把旧的顶掉)

接着按3个回车

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@localhost ~]# ssh-keygen -t rsa       <== 建立密钥对,-t代表类型,有RSA和DSA两种
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <==密钥文件默认存放位置,按Enter即可
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 生成的私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 生成的公钥
The key fingerprint is:
SHA256:K1qy928tkk1FUuzQtlZK+poeS67vxxxxxxxxxxxxxx
root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| +. |
| o * . |
| . .O + |
| . *. * |
| S =+ |
| . =... |
| .oo =+o+ |
| ==o+B*o. |
| oo.=EXO. |
+----[SHA256]-----+

最后在.ssh目录下(C盘用户文件夹下)得到了两个文件:id_rsa(私有秘钥)和id_rsa.pub(公有密钥)

使用:

要想使用ssh访问,则需将公钥放在远端。本次改进的操作则如下:

  • 公钥复制到开源库(网页部署的仓库)的 Setting-Security-Deploy keys 下,创建新的 Deploy key 名字随意,内容为公钥内容。
  • 私钥复制到私有库(源码仓库)的 Setting-Security-Secrets and variables-Actions-secret 下,创建新的 Secrets 名字要与 github-action.yml 中的 deploy_key 一致,如称为 hugo-deploy ,则 .yml 中应为:deploy_key: ${{ secrets.hugo-deploy }} ,以便对应,大小写敏感!

连接仓库并测试

剩下的就没啥事了。

取消原仓库连接:

1
2
3
4
5
6
git remote -v 
# 查看原有的remote
git remote rm "remote name"
# 解除关联,一般都是命名为origin的
rm -rf .git
# 取消git初始化

连接新的:

1
2
3
4
5
6
7
git init
git remote add origin git@github.com:yourname/repo_name.git
git checkout -b main
# 一般初始分支是master,切到现在新的默认分支main
git add .
git commit -m ''
git push

搞完直接去仓库看部署情况即可。

作者

ivy

发布于

2023-02-21

更新于

2023-03-25

许可协议

CC BY-NC-SA 4.0

评论