保护您的代码:GitHub GPG 密钥配置指南
在开源世界中,代码的安全性和可信度是开发者的生命线。GitHub 作为全球最大的代码托管平台,提供了 GPG 密钥功能,帮助开发者验证提交者的身份,确保代码的完整性。本文将为您提供一份详尽的指南,教您如何配置 GPG 密钥,并将其与您的 GitHub 账户关联。无论您是初学者还是有经验的开发者,本文都将帮助您轻松掌握这一重要技能,保护您的代码安全,提升提交的可信度。
本文详细介绍了在 macOS 上配置 GPG 密钥并将其与 GitHub 账户关联的完整流程。首先,我们将安装 GPG 命令行工具,并检查系统中是否已有 GPG 密钥。接着,我们将生成一个新的 GPG 密钥,并将其公钥添加到 GitHub 账户中。然后,我们将配置 Git 使用该 GPG 密钥进行签名,并将电子邮件与密钥关联,以确保提交的验证一致性。最后,我们将提供一些参考资料,帮助读者进一步深入了解 GPG 密钥的相关知识。本文旨在为读者提供清晰、实用的操作步骤。
Github 配置 GPG 密钥实操
本文以 macOS 为例
一、安装 GPG 命令行工具
brew install gpg
查看版本
swift
~ via 🅒 base took 4.4s
➜ gpg --version
gpg (GnuPG) 2.4.3
libgcrypt 1.10.2
Copyright (C) 2023 g10 Code GmbH
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /Users/qiaopengjun/.gnupg
支持的算法:
公钥: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
密文: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
散列: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
压缩: 不压缩, ZIP, ZLIB, BZIP2
二、检查现有 GPG 密钥
- 打开终端。
- 使用
gpg --list-secret-keys --keyid-format=long
命令列出你拥有其公钥和私钥的长形式 GPG 密钥。 签名提交或标记需要私钥。 - 检查命令输出以查看是否有 GPG 密钥对。
perl
~ via 🅒 base took 1m 16.6s
➜ gpg --list-secret-keys --keyid-format=long
gpg: 目录'/Users/qiaopengjun/.gnupg'已创建
gpg: /Users/qiaopengjun/.gnupg/trustdb.gpg:建立了信任度数据库
三、生成新 GPG 密钥
1 生成新 GPG 密钥
erlang
~ via 🅒 base
➜ gpg --full-generate-key
gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
请选择您要使用的密钥类型:
(1) RSA 和 RSA
(2) DSA 和 Elgamal
(3) DSA(仅用于签名)
(4) RSA(仅用于签名)
(9) ECC(签名和加密) *默认*
(10) ECC(仅用于签名)
(14)卡中现有密钥
您的选择是?
请选择您想要使用的椭圆曲线:
(1) Curve 25519 *默认*
(4) NIST P-384
(6) Brainpool P-256
您的选择是?
请设定这个密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0)
密钥永远不会过期
这些内容正确吗? (y/N) y
GnuPG 需要构建用户标识以辨认您的密钥。
真实姓名: [email protected]
电子邮件地址: [email protected]
注释: qiao4812
您选定了此用户标识:
"[email protected] (qiao4812) <[email protected]>"
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
gpg: 目录'/Users/qiaopengjun/.gnupg/openpgp-revocs.d'已创建
gpg: 吊销证书已被存储为'/Users/qiaopengjun/.gnupg/openpgp-revocs.d/AAD244FF0564DDDFA3FE1D0F1234567891234567.rev'
公钥和私钥已经生成并被签名。
pub ed25519 2023-07-31 [SC]
AAD244FF0564DDDFA3FE1D0F1234567891234567
uid [email protected] (qiao4812) <[email protected]>
sub cv25519 2023-07-31 [E]
2 使用 gpg --list-secret-keys --keyid-format=long
命令列出你拥有其公钥和私钥的长形式 GPG 密钥。 签名提交或标记需要私钥
ini
~ via 🅒 base took 4m 18.5s
➜ gpg --list-secret-keys --keyid-format=long
gpg: 正在检查信任度数据库
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
[keyboxd]
---------
sec ed25519/1234567891234567 2023-07-31 [SC]
AAD244FF0564DDDFA3FE1D0F1234567891234567
uid [ 绝对 ] [email protected] (qiao4812) <[email protected]>
ssb cv25519/FF697C1FC8C55C9A 2023-07-31 [E]
3 从 GPG 密钥列表中复制您想要使用的 GPG 密钥 ID 的长形式生成新的 GPG 密钥
scss
~ via 🅒 base
➜ gpg --armor --export 1234567891234567
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZMcy/RYJ....密钥.../NFCNNVZSiVMBXoNJAP0XDOZjyBsDG+Ite6Pi3pPG
ePyiElhAZPAWHRRRpTIGBA==
=IdMP
-----END PGP PUBLIC KEY BLOCK-----
~ via 🅒 base
4 复制以 -----BEGIN PGP PUBLIC KEY BLOCK-----
开头并以 -----END PGP PUBLIC KEY BLOCK-----
结尾的 GPG 密钥
5 将 GPG 密钥新增到 GitHub 帐户
四、将 GPG 密钥添加到 GitHub 帐户
-
在任何页面的右上角,单击个人资料照片,然后单击"设置"。
GitHub 帐户菜单的屏幕截图,其中显示了供用户查看和编辑其个人资料、内容和设置的选项。 菜单项"设置"用深橙色框出。
-
在边栏的"访问"部分中,单击 "SSH 和 GPG 密钥"。
-
在"GPG 密钥"标头旁边,单击"新建 GPG 密钥"。
-
在"标题"字段中键入 GPG 密钥的名称。
-
在"密钥"字段中,粘贴生成 GPG 密钥时复制的 GPG 密钥。
-
单击"添加 GPG 密钥"
-
若要确认操作,请向 GitHub 帐户进行身份验证。
五、将您的签名密钥告知 Git
-
打开终端。
-
如果之前已将 Git 配置为在使用
--gpg-sign
签名时使用不同的密钥格式,请取消设置此配置,以便使用默认openpgp
格式。cssgit config --global --unset gpg.format
-
使用
gpg --list-secret-keys --keyid-format=long
命令列出你拥有其公钥和私钥的长形式 GPG 密钥。 签名提交或标记需要私钥。
scss
~ via 🅒 base
➜ gpg --list-secret-keys --keyid-format=long
[keyboxd]
---------
sec ed25519/1234567891234567 2023-07-31 [SC]
AAD244FF0564DDDFA3FE1D0F1234567891234567
uid [ 绝对 ] [email protected] (qiao4812) <[email protected]>
ssb cv25519/FF697C1FC8C55C9A 2023-07-31 [E]
- 从 GPG 密钥列表中复制您想要使用的 GPG 密钥 ID 的长形式。 在本例中,GPG 密钥 ID 为1234567891234567 5. 在 Git 中设置 GPG 签名主键
csharp
~ via 🅒 base
➜ git config --global user.signingkey 1234567891234567
- 如果没有使用 GPG 套件,请在
zsh
shell 中运行以下命令,将 GPG 密钥添加到.zshrc
文件(如果存在)或.zprofile
文件:
bash
~ via 🅒 base
➜ if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \
else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi
或者,如果使用 bash
shell,请运行以下命令:
shell
$ if [ -r ~/.bash_profile ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bash_profile; \
else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.profile; fi
六、将电子邮件与 GPG 密钥关联
- 打开终端。
- 使用
gpg --list-secret-keys --keyid-format=long
命令列出你拥有其公钥和私钥的长形式 GPG 密钥。 签名提交或标记需要私钥。
scss
~ via 🅒 base
➜ gpg --list-secret-keys --keyid-format=long
[keyboxd]
---------
sec ed25519/1234567891234567 2023-07-31 [SC]
AAD244FF0564DDDFA3FE1D0F1234567891234567
uid [ 绝对 ] [email protected] (qiao4812) <[email protected]>
ssb cv25519/FF697C1FC8C55C9A 2023-07-31 [E]
-
从 GPG 密钥列表中复制您想要使用的 GPG 密钥 ID 的长形式。 在本例中,GPG 密钥 ID 为 1234567891234567
-
输入
gpg --edit-key GPG key ID
,替换为你想要使用的 GPG 密钥 ID。 在以下示例中,GPG 密钥 ID 为1234567891234567
:cssgpg --edit-key 1234567891234567
-
输入
gpg> adduid
以添加用户 ID 详细信息。 -
按照提示提供您的真实姓名、电子邮件地址和任何注释。 可以通过选择
N
、C
或E
来修改条目。 要将电子邮件地址保密,请使用 GitHub 提供的no-reply
电子邮件地址。 有关详细信息,请参阅"设置提交电子邮件地址"。 -
输入
O
以确认你的选择。 -
输入密钥的密码。
-
输入
gpg> save
以保存更改 -
输入
gpg --armor --export GPG key ID
,替换为你想要使用的 GPG 密钥 ID。 在以下示例中,GPG 密钥 ID 为1234567891234567
:
sql
~ via 🅒 base
➜ gpg --edit-key 1234567891234567
gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
私钥可用。
sec ed25519/1234567891234567
创建于:2023-07-31 有效至:永不 可用于:SC
信任度:绝对 有效性:绝对
ssb cv25519/FF697C1FC8C55C9A
创建于:2023-07-31 有效至:永不 可用于:E
[ 绝对 ] (1). [email protected] (qiao4812) <[email protected]>
gpg> adduid
真实姓名: qiao4812
电子邮件地址: [email protected]
注释: GITHUB-KEY qiao4812
您选定了此用户标识:
"qiao4812 (GITHUB-KEY qiao4812) <[email protected]>"
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
sec ed25519/1234567891234567
创建于:2023-07-31 有效至:永不 可用于:SC
信任度:绝对 有效性:绝对
ssb cv25519/FF697C1FC8C55C9A
创建于:2023-07-31 有效至:永不 可用于:E
[ 绝对 ] (1) [email protected] (qiao4812) <[email protected]>
[ 未知 ] (2). qiao4812 (GITHUB-KEY qiao4812) <[email protected]>
gpg> save
~ via 🅒 base took 2m 29.2s
➜ gpg --armor --export 1234567891234567
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDME......密钥........lMgYE
=zEPk
-----END PGP PUBLIC KEY BLOCK-----
~ via 🅒 base
通过将 GPG 密钥添加到 GitHub 帐户来上传 GPG 密钥。
更多详情请查看GitHub文档:docs.github.com/zh/authenti...
总结
通过本文的指导,您已经成功在 macOS 上配置了 GPG 密钥,并将其与您的 GitHub 账户关联。这一配置不仅提升了代码的安全性,还通过签名验证增强了您在 GitHub 上提交的可信度。现在,您可以放心地在 GitHub 上进行代码提交和协作了。建议您在配置完成后进行一次测试提交,以确保一切正常运行。如果您在过程中遇到任何疑问,可以参考文中提到的参考资料,或向开源社区寻求帮助。掌握 GPG 密钥配置,让您的开发之旅更加安全、高效!