Перейти к содержимому
ecdsa.com
GnuPG (gpg --verify, git verify-commit / verify-tag / log --show-signature)Git

Сообщение об ошибке

gpg: Can't check signature: No public key

Также выводится как

  • gpg: Can't check signature: no public key

GnuPG 2.4 выводит «No public key»; в переводах и старых сборках может отличаться регистр букв. Команды проверки Git завершаются с ненулевым кодом и передают вывод gpg дальше.

Что это означает

Объект подписан, и gpg нашёл подпись, но в связке ключей нет открытого ключа с отпечатком издателя, поэтому gpg не может сказать, верна подпись или нет. Какой ключ нужен, показывают предыдущие строки («Signature made …», «using … key <fingerprint>»). Дело не в неверной подписи — не хватает ключа.

Почему это происходит

Как исправить

  1. 1.

    Импортируйте ключ из доверенного источника

    Импортируйте ключ с сайта проекта, из примечаний к релизу или с сервера ключей и, прежде чем доверять подписям, проверьте отпечаток по отдельному каналу.

    bash
    # Import the signer's key from a trusted source, then compare the fingerprint out of band
    curl -sSL https://example.com/release-signing-key.asc | gpg --import
    gpg --fingerprint release@example.com
    git verify-commit HEAD
  2. 2.

    Используйте ключи, которые публикует платформа

    GitHub отдаёт зарегистрированные GPG-ключи каждого пользователя по адресу `https://github.com/<user>.gpg`.

    bash
    # Keys a GitHub user registered for signing (verify the fingerprint before trusting it)
    curl -sSL https://github.com/<user>.gpg | gpg --import

Связанные ошибки

Открыть всю базу ошибок подписей