GPG密钥的配置与Git的使用

一些Git命令

一、添加GPG密钥

准备工作:安装与配置GPG

(虽然Git自带GPG,但这里仍单独安装了GPG程序)

在Windows下,安装Gpg4win,下载地址:https://gpg4win.org/download.html

Gpg4win中包含了GnuPG(GnuPG即GPG的全名)。

安装完成后,执行如下命令,指定使用我们刚安装的GnuPG。

1
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

创建与设置密钥

使用--full-generate-key选项,即在创建密钥时进行完整的密钥选项设置。

1
gpg --full-generate-key

在旧版本GPG及对应的教程中,直接输入gpg --gen-key便会显示完整的密钥选项设置,至少在GPG 2.2及以后版本中,输入gpg --gen-key会直接创建默认设置的密钥(2048位,存在有效期限制)。

下面开始密钥设置。

1.选择加密算法

选择默认的1即可,表示加密和签名均使用 RSA 算法。

1
2
3
4
5
6
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
2.设置密钥长度

最长为4096位,设置为4096位即可。

1
2
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
3.设置密钥有效期

选择0为永久有效。

1
2
3
4
5
6
7
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)

完成上述设置后,会要求确认。

4.输入Github账号信息

输入Github账号、Github邮箱地址、密钥备注(即Comment,此项可留空)。

5.为密钥设置密码

第4、5步按照流程进行即可。

至此,一个新的GPG密钥创建完成。

(我记不清创建随机数的过程了)

输出密钥与上传

1.输出密钥

获取GPG key ID的两种方法:

1.在密钥创建完成后,会出现一长串字符,在这里似乎代表GPG key ID,以此ID执行以下命令,也是可以输出密钥文件的应该。

2.打开Gpg4win程序,在图形界面会看到4*4的字符,这个可以确认是GPG key ID,以此ID执行以下命令(不要输空格),输出密钥文件。

1
gpg --armor --output public-key.txt --export "GPG key ID"

在旧版本GPG及对应的教程中,会有一条短GPG key ID,但新版本似乎没有。

2.上传密钥至Github

将密钥文件的内容复制到Github设置页面—SSH and GPG keys—New GPG key中即可。

(新建GPG key后,也可以在SSH and GPG keys页面上看到GPG key ID,与Gpg4win程序图形界面中看到的ID是一致的)

在Git中配置密钥

在Git添加密钥。

1
git config --global user.signingkey "GPG key ID"

在全局上使用该密钥。
(也可以专门在一个项目上使用该密钥)

1
git config --global commit.gpgsign true

(取消全局的命令如下)

1
git config --global commit.gpgsign false

执行以下命令,检查密钥配置情况。

1
git config -l

若包含以下信息,则说明密钥配置成功。

1
2
user.signingkey= "GPG key ID"
commit.gpgsign=true

二、通过Git命令提交代码

在本地修改完代码后,进入项目文件夹,执行以下命令,提交代码至master分支。

1
2
3
$ git add .
$ git commit -m "messsage for code update"
$ git push -u origin master

在执行第3条命令后会要求输入Github账号密码,输入后即成功向Github提交代码。