跳到主要内容

Git GPG 密钥

在 Git 中,GPG(GNU Privacy Guard)密钥用于对提交进行签名,以确保提交的真实性和完整性。通过使用 GPG 密钥,你可以证明提交确实是由你本人完成的,而不是其他人冒充你提交的。这对于开源项目和企业级开发尤为重要,因为它可以防止恶意代码的注入。

什么是 GPG 密钥?

GPG 是一种加密工具,用于生成和管理密钥对。每个密钥对包括一个私钥和一个公钥。私钥用于签名,而公钥用于验证签名。在 Git 中,你可以使用 GPG 密钥对提交进行签名,其他人可以使用你的公钥来验证这些签名。

为什么使用 GPG 密钥?

  1. 身份验证:确保提交是由你本人完成的。
  2. 完整性:确保提交的内容在传输过程中没有被篡改。
  3. 信任链:通过签名,其他人可以信任你的提交。

如何生成 GPG 密钥

1. 安装 GPG

首先,确保你的系统上已经安装了 GPG。你可以通过以下命令检查是否已安装:

bash
gpg --version

如果未安装,可以通过以下命令安装:

  • macOS: brew install gnupg
  • Ubuntu/Debian: sudo apt-get install gnupg
  • Windows: 下载并安装 Gpg4win

2. 生成 GPG 密钥

使用以下命令生成一个新的 GPG 密钥:

bash
gpg --full-generate-key

按照提示选择密钥类型(通常选择 RSA and RSA),设置密钥长度(建议 4096 位),并设置密钥的有效期(通常选择 0,表示永不过期)。

3. 列出 GPG 密钥

生成密钥后,你可以使用以下命令列出所有 GPG 密钥:

bash
gpg --list-secret-keys --keyid-format LONG

输出示例:

bash
/Users/username/.gnupg/pubring.kbx
----------------------------------
sec rsa4096/3AA5C34371567BD2 2023-10-01 [SC]
ABCDEF1234567890ABCDEF1234567890ABCDEF12
uid [ultimate] Your Name <your.email@example.com>
ssb rsa4096/42B317FD4BA89E7A 2023-10-01 [E]

在这里,3AA5C34371567BD2 是你的密钥 ID。

4. 导出公钥

你可以使用以下命令导出公钥:

bash
gpg --armor --export 3AA5C34371567BD2

将输出的公钥复制并添加到你的 Git 托管平台(如 GitHub、GitLab)的账户设置中。

配置 Git 使用 GPG 密钥

1. 告诉 Git 使用哪个 GPG 密钥

使用以下命令配置 Git 使用你的 GPG 密钥:

bash
git config --global user.signingkey 3AA5C34371567BD2

2. 启用提交签名

你可以通过以下命令启用对所有提交的自动签名:

bash
git config --global commit.gpgsign true

3. 提交并签名

现在,当你进行提交时,Git 会自动使用你的 GPG 密钥对提交进行签名:

bash
git commit -m "Your commit message"

4. 验证签名

你可以使用以下命令验证提交的签名:

bash
git log --show-signature

输出示例:

bash
commit abcdef1234567890abcdef1234567890abcdef12 (HEAD -> main)
gpg: Signature made Mon Oct 2 12:00:00 2023 UTC
gpg: using RSA key 3AA5C34371567BD2
gpg: Good signature from "Your Name <your.email@example.com>" [ultimate]
Author: Your Name <your.email@example.com>
Date: Mon Oct 2 12:00:00 2023 +0000

Your commit message

实际案例

假设你正在参与一个开源项目,项目要求所有提交都必须使用 GPG 密钥签名。你按照上述步骤生成了 GPG 密钥,并将其添加到 GitHub 账户中。现在,每次你提交代码时,Git 都会自动使用你的 GPG 密钥对提交进行签名。其他开发者可以通过你的公钥验证这些签名,确保提交的真实性和完整性。

总结

使用 GPG 密钥为 Git 提交签名是一种有效的方式来确保代码的真实性和完整性。通过生成 GPG 密钥、配置 Git 并使用它来签名提交,你可以为你的代码库增加一层安全保障。

附加资源

练习

  1. 在你的本地机器上生成一个 GPG 密钥。
  2. 将公钥添加到你的 GitHub 或 GitLab 账户中。
  3. 配置 Git 使用 GPG 密钥,并提交一个签名的提交。
  4. 使用 git log --show-signature 验证提交的签名。

通过完成这些练习,你将更好地理解如何在 Git 中使用 GPG 密钥来保护你的代码。