如何使用 GPG 在 Github、Gitlab、Bitbucket 上签署提交

2025-06-10

如何使用 GPG 在 Github、Gitlab、Bitbucket 上签署提交

来自UnsplashJantine Doornbos的照片

大家好,

每次我换了一台新电脑(虽然不是经常换,但足以写这篇文章),我都会为我拥有的不同代码存储库帐户的 Git 配置而“苦苦挣扎”。

每次我买了新电脑,我都记不清几年前/几个月前是怎么设置好的。
所以这篇文章与其说是写给现在正在读的你,不如说是写给未来的我。🤔

设置好 SSH 密钥后,我必须在 Git 服务上设置我的签名身份。

事实上,如果你不签署你的提交,每个人都可以冒充你的提交
这就是为什么签署你的提交非常重要。🖋️


总结

总结一下我们要做的事情,我们将创建一个 GPG 密钥并将其作为我们的身份添加到您的 Git 服务中,并设置 Git 使用正确的 GPG 密钥并将电子邮件与 GPG 密钥关联

我会向你展示如何GitHubBitbucketGitLab上执行此操作。
然后,我会解释如何根据你的项目定义你想要使用的签名身份。

要签署提交,您需要创建一个私钥/公钥对,并将公钥分享给所有想要验证您提交的人。
您的公钥实际上是通过 Github、Gitlab 或 Bitbucket 分享给那些想要验证您身份的人。

执行这些操作的每个命令如下所述。👨‍💻 ⬇️
尽情享受吧。😎


🔑 GPG 密钥生成

  1. 这是创建 GPG 密钥的默认命令。


gpg --full-generate-key


Enter fullscreen mode Exit fullscreen mode

如果您不知道 GPG 代表什么,您应该在 Wikipedia 上查看一下

  1. 在提示符下,指定您想要的键类型,或按Enter接受默认值RSA and RSA

    GitHub 支持多种您可以使用的 GPG 密钥算法。

    • RSA
    • 埃尔贾迈勒
    • 数字减影血管造影
    • 体外循环脱氢表雄酮
    • 椭圆曲线数字签名算法
    • 埃德萨
  2. 输入所需的密钥大小。我建议最大密钥大小为4096

  3. 输入密钥的有效期。按 Enter 键指定默认选项,表示密钥不会过期。我建议密钥的有效期最多为 1 年。

  4. 输入您的用户 ID 信息。

  5. 验证您的选择是否正确。

  6. 输入安全密码。

  7. 将该密钥的安全密码保存到您选择的密码管理器中(我个人使用KeepassXC)。

为了检查一切是否正常,您可以列出设备上的 GPG 密钥。



gpg --list-secret-keys --keyid-format LONG
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10


Enter fullscreen mode Exit fullscreen mode

这是展示整个过程的视频。

对于该示例,我会考虑我们有一个想要在 Github 和 Gitlab 上使用的个人身份(电子邮件)以及一个想要在 Github 和 Bitbucket 上使用的专业身份。

让我们用表格来总结一下:

服务 身份 电子邮件 评论
Github 个人的 remi.lavedrine@perso.com Github 上的个人身份
Github 专业的 remi.lavedrine@pro.com Github 上的专业身份
GitLab 个人的 remi.lavedrine@perso.com Gitlab 上的个人身份
Bitbucket 专业的 remi.lavedrine@pro.com Bitbucket 上的专业身份

我创建了所有这些密钥,就是为了写这篇文章。
您可以随意创建所需的密钥,然后使用以下命令检查所有密钥是否正确。gpg --list-secret-keys --keyid-format LONG


✍️ 配置 Git 身份和签名策略

现在我们已经准备好 GPG 密钥,我们可以配置 Git 根据我们的身份获取正确的 GPG 密钥。

🗺️ 全局配置

您必须为您的 Git 声明一个全局配置。



git config --global --edit


Enter fullscreen mode Exit fullscreen mode

添加默认用户:



[user]
    signingkey = 4B6598BF5707D5A4
    name = Remi Lavedrine
    email = remi.lavedrine@perso.com


Enter fullscreen mode Exit fullscreen mode

定义您的签名提交策略(我不建议自动签署所有提交😉):



[commit]
    gpgsign = true


Enter fullscreen mode Exit fullscreen mode

所以我们现在有了默认的 Git 身份。

🏙️ 本地配置

为了更好地控制我们的签名身份,我们将在克隆新仓库时为每个项目定义一个身份项目。
只需移动到目标文件夹,然后克隆你的仓库(git clone git@github.com:thepracticaldev/dev.to.git例如😉)。

进入存储库文件夹后,您可以执行该命令:



git config --local --edit


Enter fullscreen mode Exit fullscreen mode

或者如果您不太习惯使用 vi,您可以直接编辑该./.git/config文件。



nano ./.git/config


Enter fullscreen mode Exit fullscreen mode

而且,就像全局配置一样,您只需添加用户和您选择的签名提交策略。



[user]
    signingkey = 4B6598BF5707D5A4
    name = Remi Lavedrine
    email = remi.lavedrine@perso.com

[commit]
    gpgsign = true


Enter fullscreen mode Exit fullscreen mode

对您正在使用并想要签署提交的每个存储库执行此操作。


💭 将密钥添加到您的存储库帐户

现在本地一切设置完毕。
接下来我们需要将 SSH 公钥添加您正在使用的服务中。

  1. 让我们列出可用的 GPG 密钥。```bash

gpg --list-keys
sec rsa4096/4B6598BF5707D5A4 2019-07-16 [SC] [到期:2020-07-15]
913C42CFA493DCF45FA65B464B6598BF5707D5A4
uid [ ultime ] Rémi Lavedrine(Github 上的个人身份)remi.lavedrine@perso.com
ssb rsa4096/425EA1013A372D16 2019-07-16 [E] [到期:2020-07-15]

sec rsa4096/943F54877369FBC9 2019-07-16 [SC] [到期:2020-07-15]
BD1318B04CEAB84DC5FB8BFA943F54877369FBC9
uid [ ultime ] Rémi Lavedrine(Github 上的专业身份)remi.lavedrine@pro.com
ssb rsa4096/61531E9B065DD712 2019-07-16 [E] [到期:2020-07-15]

sec rsa4096/D1495F54BE4ECF37 2019-07-16 [SC] [到期:2020-07-15]
9EB8C0816D7C607FC493F354D1495F54BE4ECF37
uid [ ultime ] Rémi Lavedrine(Gitlab 个人身份)remi.lavedrine@perso.com
ssb rsa4096/90055F33F5B23681 2019-07-16 [E] [到期:2020-07-15]

sec rsa4096/B788EC8FF8B4487C 2019-07-16 [SC] [到期:2020-07-15]
090D6265BB26DF44E3D84173B788EC8FF8B4487C
uid [ ultime ] Rémi Lavedrine(Bitbucket 上的专业身份)remi.lavedrine@pro.com
ssb rsa4096/659371B2F5F99CAB 2019-07-16 [E] [到期:2020-07-15]


2. And copy the one we want to use (*Personal Identity on Github*).

🍏 - On MacOS, it is pretty easy to copy a GPG Public key to the clipboard.
```bash


gpg --armor --export 913C42CFA493DCF45FA65B464B6598BF5707D5A4 | pbcopy


Enter fullscreen mode Exit fullscreen mode

🐧 - 在 Linux 上,您只需使用 xclip 即可执行此操作(如果您的系统上没有,请sudo apt install xclip在您的终端上启动)



gpg --armor --export 913C42CFA493DCF45FA65B464B6598BF5707D5A4 | xclip -selection c


Enter fullscreen mode Exit fullscreen mode

🐙 Github

  1. 让我们登录您的 Github 帐户并转到帐户设置。
    Github:前往“设置”

  2. 选择“SSH 和 GPG 密钥”。
    Github:列出 GPG 密钥

  3. 单击“新建 GPG 密钥”按钮,将剪贴板的内容粘贴到网站,然后单击“添加 GPG 密钥”。
    Github:在 Github 帐户上添加 GPG 密钥

🤜 💥 🤛 您已准备就绪!!!

这是一个总结的视频。

GitLab

  1. 让我们登录您的 Gitlab 帐户并转到该帐户的设置。
    Gitlab:前往“设置”

  2. 导航到 GPG 密钥选项卡,将您的公钥粘贴到“密钥”框中,然后保存。
    将 GPG 密钥添加到 Gitlab

🤜 💥 🤛 您已准备就绪!!!

🗑️ Bitbucket

在 Bitbucket 上,签名提交仅适用于服务的内部版本(Bitbucket Server)。

  1. 让我们登录您的 Bitbucket 帐户并转到该帐户的设置。
    Bitbucket:前往“设置”

  2. 单击 GPG 密钥。> 添加密钥。

  3. 将剪贴板中的 GPG 公钥内容粘贴到剪贴板中。

  4. 单击“添加密钥”按钮进行验证。

🤜 💥 🤛 您已准备就绪!!!


🖋️ 使用 GPG 密钥签署提交

现在,您的计算机和服务上的所有内容都已配置完毕。
您可以签署提交。

要签署您的提交,您只需在命令-S中添加“ ”参数git commit

签名的提交将如下所示:



git commit -S -m "My commit message"


Enter fullscreen mode Exit fullscreen mode

然后,您可以将提交推送到GitHubGitLabBitbucket并检查您的提交是否已经验证。

正如配置部分所述,如果您不想-S在每次提交时添加“ ”参数,您可以编辑 Git 本地配置(git config --local --editgit config --local commit.gpgsign true)。


🖋️ 使用 GPG 密钥对标签进行签名

在 Git 上,你可以对提交进行签名,
但你也可以对标签进行签名。

至于签署提交,您只需在命令-s中添加“ ”参数git tag

签名的标签如下所示:



git tag -s -m "My tag message"


Enter fullscreen mode Exit fullscreen mode

您还可以通过运行以下命令来验证您的签名标签:



git tag -v mytag
    Verifies the signed tag


Enter fullscreen mode Exit fullscreen mode

您现在可以创建任意数量的 GPG 密钥并将它们添加到 Github、Gitlab 或 Bitbucket,然后在本地配置您的签名策略签署您的提交或标签

我希望这对你有帮助。

干杯🍻

*我在GitHubGitLabBitbucket上找到了这篇文章的帮助


视频由Wild & Secure制作,该公司是您在安防和房地产领域提供全方位服务的咨询公司。
如果您想每周收到高质量的安防内容,请在我们的网站.documentations* 上订阅我们的新闻通讯。

鏂囩珷鏉ユ簮锛�https://dev.to/shostarsson/how-to-use-pgp-to-sign-your-commits-on-github-gitlab-bitbucket-3dae
PREV
JavaScript 数组方法
NEXT
第二部分:在文件共享应用程序中使用 Kinde 和 Convex 实现主身份验证和基于角色的访问控制 (RBAC)