Hub documentation

使用 GPG 对提交进行签名

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

使用 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 密钥添加到您的账户

  1. 首先,在您的计算机上选择或生成一个 GPG 密钥。请确保该密钥的电子邮件地址与您的 Hugging Face 账户 中的地址一致,并且您的账户邮箱已通过验证。

  2. 导出所选密钥的公开部分:

gpg --armor --export <YOUR KEY ID>
  1. 然后访问您的个人资料设置页面,并点击添加 GPG 密钥。

在文本区域中复制并粘贴 gpg --export 命令的输出,然后单击 Add Key。

  1. 恭喜!🎉 您刚刚向您的账户添加了一个 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”徽章的提交。

要在计算机上的任何本地仓库中默认对所有提交进行签名,您可以运行 git config —global commit.gpgsign true。

Update on GitHub