配置Git使用GPG

本文介绍了如何使用GPG进行Git提交签名,包括生成密钥对、管理密钥、导出与导入公钥、私钥,以及配置Git使用GPG进行提交签名验证的步骤。GPG的非对称加密特性确保了代码安全,公钥用于加密,私钥用于解密,保证了信息的机密性。

安装Git之后,默认会带Git Bash,通过Git Bash可以直接访问gpg命令

GPG支持多种加密方式,一般在Git上使用GPG是指使用RSA非对称加密。

RSA非对称加密的密钥是一对密钥,分为 公钥 (public key)私钥 (private key) 。公钥用作加密,私钥用作解密。因为加密/解密用的是不同的密钥,因此称为非对称加密。

想要发送加密消息时:
  1. 消息的接收方将公钥发给你
  2. 你使用公钥加密消息
  3. 将加密后消息发出
  4. 对方收到加密后的消息,使用自己手里的与之对应的私钥解密消息
接收消息时:
  1. 把与自己私钥所对应的公钥发给对方
  2. 对方使用你给的公钥对消息加密
  3. 将加密后消息发出
  4. 你收到加密后消息,用自己手里的私钥解密消息
整个过程不存在私钥的交换,只有公钥交换。私钥是解密时使用的,交出私钥等同于交出解密消息方法。

GPG是帮助我们生成这过程中需要用到的“公钥/私钥”密钥对,以及相关管理密钥功能的程序。

生成一对密钥(一个公钥和一个私钥)

gpg --full-generate-key

列出所有密钥对

gpg --list-keys

导出公钥

以ASCII编码方式打印公钥到命令行(方便复制粘贴):
【USERNAME需要替换,USERNAME可以是一长串的ID】

gpg -a --export USERNAME

导出公钥到文件(ascii格式):
(FILEPATH 需要替换 )

gpg -a -o FILEPATH --export USERNAME

导出公钥到文件(二进制):

gpg -o FILEPATH --export USERNAME

导出私钥到文件(二进制):【私钥切勿外传】
(ascii格式添加 -a即可)

gpg -o FILEPATH --export-secret-keys USERNAME

导入密钥

gpg --import FILEPATH

显示常用GPG命令功能

gpg --help

配置Git使用公钥检查提交签名

git config --global user.signingkey GPG-KEY-ID

一个仓库的提交使用GPG签名验证

git config commit.gpgsign true

所有仓库Git提交时使用公钥加密

git config --global commit.gpgsign true
### 配置 Git 使用 GPG 提交签名的方法 在 Git使用 GPG 签名提交可以确保提交记录的来源可信,并防止提交内容被篡改。GitHub、GitLab 等平台会识别 GPG 签名并显示“Verified”标签,增强代码提交的安全性。 #### 1. 安装和检查 GPG 环境 首先确保系统中已安装 GPG 工具。可以通过以下命令查看是否已安装: ```bash gpg --version ``` 如果命令返回 GPG 的版本信息,则表示已安装;否则需要先安装 GPG 工具。 #### 2. 生成 GPG 密钥对 如果没有可用的 GPG 密钥对,可使用以下命令生成: ```bash gpg --full-generate-key ``` 根据提示选择密钥类型(通常为 OpenPGP),输入密钥有效期、姓名和邮箱等信息。生成完成后,可以通过以下命令列出所有公钥: ```bash gpg --list-keys ``` 输出中将包含类似 `pub rsa3072/ABC1234567890DEF` 的条目,其中 `ABC1234567890DEF` 是密钥 ID。 #### 3. 将 GPG 公钥添加到 Git 平台 使用以下命令导出公钥内容: ```bash gpg --armor --export ABC1234567890DEF ``` 该命令会输出以 `-----BEGIN PGP PUBLIC KEY BLOCK-----` 开头的 ASCII 编码公钥文本。复制整个内容,并粘贴到 GitHub、GitLab 或 Gitee 等平台的 GPG 密钥设置页面中完成绑定[^2]。 #### 4. 配置 Git 使用 GPG 签名提交 设置 Git 使用 GPG 格式及默认签名密钥: ```bash git config --global gpg.format openpgp git config --global user.signingkey ABC1234567890DEF ``` 启用自动签名功能,使每次提交都自动使用 GPG 签名: ```bash git config --global commit.gpgsign true ``` 若仅希望在当前仓库中启用签名提交,则去掉 `--global` 参数: ```bash git config commit.gpgsign true ``` #### 5. 提交时手动签名 即使启用了自动签名,也可以在提交时显式添加 `-S` 参数进行签名: ```bash git commit -S -m "Your commit message" ``` 查看提交日志时,可通过以下命令验证签名状态: ```bash git log --show-signature ``` 如果签名有效,输出中将显示 `Good signature from "User Name <email@example.com>"`。 #### 6. 设置信任级别以增强验证可靠性 导入他人公钥后,应通过以下命令设置信任等级: ```bash gpg --edit-key "User Name <email@example.com>" > trust > save ``` 选择合适的信任级别(如完全信任),以确保签名验证结果准确可靠。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值