如何使用 GPG 在 Github、Gitlab、Bitbucket 上签署提交
来自Unsplash的Jantine Doornbos的照片
大家好,
每次我换了一台新电脑(虽然不是经常换,但足以写这篇文章),我都会为我拥有的不同代码存储库帐户的 Git 配置而“苦苦挣扎”。
每次我买了新电脑,我都记不清几年前/几个月前是怎么设置好的。
所以这篇文章与其说是写给现在正在读的你,不如说是写给未来的我。🤔
设置好 SSH 密钥后,我必须在 Git 服务上设置我的签名身份。
事实上,如果你不签署你的提交,每个人都可以冒充你的提交。
这就是为什么签署你的提交非常重要。🖋️
总结
总结一下我们要做的事情,我们将创建一个 GPG 密钥并将其作为我们的身份添加到您的 Git 服务中,并设置 Git 使用正确的 GPG 密钥并将电子邮件与 GPG 密钥关联。
我会向你展示如何在GitHub、Bitbucket和GitLab上执行此操作。
然后,我会解释如何根据你的项目定义你想要使用的签名身份。
要签署提交,您需要创建一个私钥/公钥对,并将公钥分享给所有想要验证您提交的人。
您的公钥实际上是通过 Github、Gitlab 或 Bitbucket 分享给那些想要验证您身份的人。
执行这些操作的每个命令如下所述。👨💻 ⬇️
尽情享受吧。😎
🔑 GPG 密钥生成
- 这是创建 GPG 密钥的默认命令。
gpg --full-generate-key
如果您不知道 GPG 代表什么,您应该在 Wikipedia 上查看一下。
-
在提示符下,指定您想要的键类型,或按
Enter
接受默认值RSA and RSA
。GitHub 支持多种您可以使用的 GPG 密钥算法。
- RSA
- 埃尔贾迈勒
- 数字减影血管造影
- 体外循环脱氢表雄酮
- 椭圆曲线数字签名算法
- 埃德萨
-
输入所需的密钥大小。我建议最大密钥大小为
4096
。 -
输入密钥的有效期。按 Enter 键指定默认选项,表示密钥不会过期。我建议密钥的有效期最多为 1 年。
-
输入您的用户 ID 信息。
-
验证您的选择是否正确。
-
输入安全密码。
-
将该密钥的安全密码保存到您选择的密码管理器中(我个人使用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
这是展示整个过程的视频。
对于该示例,我会考虑我们有一个想要在 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
添加默认用户:
[user]
signingkey = 4B6598BF5707D5A4
name = Remi Lavedrine
email = remi.lavedrine@perso.com
定义您的签名提交策略(我不建议自动签署所有提交😉):
[commit]
gpgsign = true
所以我们现在有了默认的 Git 身份。
🏙️ 本地配置
为了更好地控制我们的签名身份,我们将在克隆新仓库时为每个项目定义一个身份项目。
只需移动到目标文件夹,然后克隆你的仓库(git clone git@github.com:thepracticaldev/dev.to.git
例如😉)。
进入存储库文件夹后,您可以执行该命令:
git config --local --edit
或者如果您不太习惯使用 vi,您可以直接编辑该./.git/config
文件。
nano ./.git/config
而且,就像全局配置一样,您只需添加用户和您选择的签名提交策略。
[user]
signingkey = 4B6598BF5707D5A4
name = Remi Lavedrine
email = remi.lavedrine@perso.com
[commit]
gpgsign = true
对您正在使用并想要签署提交的每个存储库执行此操作。
💭 将密钥添加到您的存储库帐户
现在本地一切设置完毕。
接下来我们需要将 SSH 公钥添加到您正在使用的服务中。
- 让我们列出可用的 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
🐧 - 在 Linux 上,您只需使用 xclip 即可执行此操作(如果您的系统上没有,请sudo apt install xclip
在您的终端上启动)
gpg --armor --export 913C42CFA493DCF45FA65B464B6598BF5707D5A4 | xclip -selection c
🐙 Github
🤜 💥 🤛 您已准备就绪!!!
这是一个总结的视频。
GitLab
🤜 💥 🤛 您已准备就绪!!!
🗑️ Bitbucket
在 Bitbucket 上,签名提交仅适用于服务的内部版本(Bitbucket Server)。
🤜 💥 🤛 您已准备就绪!!!
🖋️ 使用 GPG 密钥签署提交
现在,您的计算机和服务上的所有内容都已配置完毕。
您可以签署提交。
要签署您的提交,您只需在命令-S
中添加“ ”参数git commit
。
签名的提交将如下所示:
git commit -S -m "My commit message"
然后,您可以将提交推送到GitHub、GitLab或Bitbucket并检查您的提交是否已经验证。
正如配置部分所述,如果您不想-S
在每次提交时添加“ ”参数,您可以编辑 Git 本地配置(git config --local --edit
或git config --local commit.gpgsign true
)。
🖋️ 使用 GPG 密钥对标签进行签名
在 Git 上,你可以对提交进行签名,
但你也可以对标签进行签名。
至于签署提交,您只需在命令-s
中添加“ ”参数git tag
。
签名的标签如下所示:
git tag -s -m "My tag message"
您还可以通过运行以下命令来验证您的签名标签:
git tag -v mytag
Verifies the signed tag
您现在可以创建任意数量的 GPG 密钥并将它们添加到 Github、Gitlab 或 Bitbucket,然后在本地配置您的签名策略并签署您的提交或标签。
我希望这对你有帮助。
干杯🍻
*我在GitHub、GitLab和Bitbucket上找到了这篇文章的帮助
视频由Wild & Secure制作,该公司是您在安防和房地产领域提供全方位服务的咨询公司。
如果您想每周收到高质量的安防内容,请在我们的网站.documentations* 上订阅我们的新闻通讯。