Hub documentation
Подписание коммитов с помощью GPG
Подписание коммитов с помощью 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-ключа в ваш аккаунт
Сначала выберите или сгенерируйте GPG-ключ на вашем компьютере. Убедитесь, что адрес электронной почты ключа совпадает с адресом в вашем аккаунте Hugging Face account и что адрес электронной почты вашего аккаунта подтвержден.
Экспортируйте публичную часть выбранного ключа:
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>
Затем добавьте флаг -S к командам git commit, чтобы подписывать свои коммиты!
git commit -S -m "My first signed commit"После отправки на Hub вы должны увидеть коммит с бейджем «Verified».
Update on GitHubЧтобы по умолчанию подписывать все коммиты в любом локальном репозитории на вашем компьютере, выполните
git config —global commit.gpgsign true.