Hub documentation
使用 GPG 对提交进行签名
使用 GPG 对提交进行签名
git 有一个身份验证层,用于控制谁可以向仓库推送提交,但它不会验证实际的提交作者。
换句话说,你可以以 Elon Musk <elon@tesla.com> 的身份提交更改,将它们推送到你首选的 git 托管平台(例如 github.com),你的提交就会链接到 Elon 的 GitHub 个人资料。(试试看!但如果你冒充他导致 Elon 生气,可别怪我们。)
我们实现 GPG 签名的原因如下:
- 为了提供更细粒度的安全性,尤其是在越来越多的企业用户依赖 Hub 的情况下。
- 提供由密码学安全来源支持的机器学习基准测试。
有关更多背景信息,请参阅 Ale Segala 的文章 如何(以及为何)对 git 提交进行签名。
你可以使用 GNU Privacy Guard (GPG) 和密钥服务器来证明某个提交是由你创建的。GPG 是一种用于验证消息来源真实性的加密工具。下面我们将介绍如何在 Hugging Face 上完成此设置。
《Pro Git》一书一如既往地是了解提交签名的优质资源:Pro Git:签署你的工作。
设置签名提交验证
您需要先在系统中安装 GPG,才能执行以下命令。
它默认包含在大多数 Linux 发行版中。 在 Windows 上,它包含在 Git Bash 中(随 Windows 版
git一起提供)。
您可以在本地使用 GPG 对提交进行签名。 然后配置您的个人资料,以便在 Hub 上将这些提交标记为 已验证, 这样其他人就能确信它们来自可信来源。
如需深入了解 git 和 GPG 如何交互,请访问git 官方文档中关于此主题的说明
提交可以具有以下签名状态:
| 状态 | 解释 |
|---|---|
| 已验证 | 该提交已签名,且签名已通过验证 |
| 未验证 | 该提交已签名,但无法验证签名 |
| 无签名状态 | 该提交未签名 |
要将某个提交标记为 verified,你需要在 Hugging Face 账户中上传用于签名的公钥。
使用 gpg --list-secret-keys 命令列出您同时拥有公钥和私钥的 GPG 密钥。
签名提交或标签需要私钥。
如果您没有 GPG 密钥对,或者不想使用现有密钥来签署您的提交,请前往 生成新的 GPG 密钥。
否则,请直接前往将 GPG 密钥添加到您的账户。
生成新的 GPG 密钥
要生成 GPG 密钥,请运行以下命令:
gpg --gen-key
随后,GPG 将引导您完成创建 GPG 密钥对的过程。
请确保为此密钥指定一个电子邮件地址,并且该地址与您在 Hugging Face 账户中指定的地址一致。
将 GPG 密钥添加到您的账户
首先,在您的计算机上选择或生成一个 GPG 密钥。请确保该密钥的电子邮件地址与您的 Hugging Face 账户 中的地址一致,并且您的账户邮箱已通过验证。
导出所选密钥的公开部分:
gpg --armor --export <YOUR KEY ID>- 然后访问您的个人资料设置页面,并点击添加 GPG 密钥。
在文本区域中复制并粘贴 gpg --export 命令的输出,然后单击 Add Key。
- 恭喜!🎉 您刚刚向您的账户添加了一个 GPG 密钥!
配置 git 以使用 GPG 对提交进行签名
最后一步是配置 git 以签署你的提交:
git config user.signingkey <Your GPG Key ID> git config user.email <Your email on hf.co>
然后,在您的 git commit 命令中添加 -S 标志,以签署您的提交!
git commit -S -m "My first signed commit"推送到 Hub 后,您应该能看到带有“Verified”徽章的提交。
Update on GitHub要在计算机上的任何本地仓库中默认对所有提交进行签名,您可以运行
git config —global commit.gpgsign true。