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), и ваш коммит будет ссылаться на GitHub-профиль Илона. (Попробуйте! Но не вините нас, если Илон разозлится на вас за то, что вы выдаёте себя за него.)

Причины, по которым мы реализовали подпись GPG:

  • Для обеспечения более детального уровня безопасности, особенно учитывая, что всё больше корпоративных пользователей полагаются на Hub.
  • Для предоставления ML-бенчмарков, подкреплённых криптографически защищённым источником.

Подробнее о контексте — в статье Ale Segala Как (и зачем) подписывать коммиты git.

Вы можете подтвердить, что коммит создан вами, с помощью GNU Privacy Guard (GPG) и сервера ключей. GPG — это криптографический инструмент, используемый для проверки подлинности источника сообщения. Ниже мы объясним, как настроить это на Hugging Face.

Книга Pro Git, как обычно, является хорошим источником информации о подписании коммитов: Pro Git: Signing your work.

Настройка проверки подписанных коммитов

Для выполнения следующих команд вам необходимо установить GPG на вашей системе.

Он по умолчанию входит в состав большинства дистрибутивов Linux. На Windows он входит в состав Git Bash (который поставляется вместе с git для Windows).

Вы можете подписывать свои коммиты локально с помощью GPG. Затем настройте свой профиль, чтобы эти коммиты помечались как verified на Hub, чтобы другие пользователи могли быть уверены, что они исходят от доверенного источника.

Для более подробного объяснения того, как git и GPG взаимодействуют, посетите документацию git по этой теме

Коммиты могут иметь следующие статусы подписания:

СтатусПояснение
ПровереноКоммит подписан, и подпись проверена
НепроверенныйКоммит подписан, но подпись не удалось проверить
Нет статуса подписанияКоммит не подписан

Чтобы коммит был отмечен как verified, необходимо загрузить публичный ключ, которым он был подписан, в ваш аккаунт Hugging Face.

Используйте команду gpg --list-secret-keys, чтобы получить список GPG-ключей, для которых у вас есть как открытый, так и закрытый ключ. Закрытый ключ необходим для подписи коммитов или тегов.

Если у вас нет пары ключей GPG или вы не хотите использовать существующие ключи для подписи коммитов, перейдите к разделу Создание нового ключа GPG.

В противном случае сразу переходите к разделу Добавление ключа GPG к вашему аккаунту.

Создание нового ключа GPG

Для генерации ключа GPG выполните следующую команду:

gpg --gen-key

Затем GPG проведёт вас по шагам создания пары ключей GPG.

Убедитесь, что для этого ключа указан адрес электронной почты, и что он совпадает с тем, который вы указали в вашем аккаунте Hugging Face account.

Добавление GPG-ключа в ваш аккаунт

  1. Сначала выберите или сгенерируйте GPG-ключ на вашем компьютере. Убедитесь, что адрес электронной почты ключа совпадает с адресом в вашем аккаунте Hugging Face account и что адрес электронной почты вашего аккаунта подтвержден.

  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>

Затем добавьте флаг -S к командам git commit, чтобы подписывать свои коммиты!

git commit -S -m "My first signed commit"

После отправки на Hub вы должны увидеть коммит с бейджем «Verified».

Чтобы по умолчанию подписывать все коммиты в любом локальном репозитории на вашем компьютере, выполните git config —global commit.gpgsign true.

Update on GitHub