Message d’erreur
gpg: Can't check signature: No public key
Également affiché sous la forme
- gpg: Can't check signature: no public key
GnuPG 2.4 écrit « No public key » ; les traductions et les builds plus anciens peuvent différer par la casse. Les commandes de vérification de Git se terminent avec un code non nul et retransmettent la sortie de gpg.
Ce que cela signifie
L’objet est signé et gpg a trouvé la signature, mais le trousseau ne contient aucune clé publique correspondant à l’empreinte de l’émetteur : gpg ne peut donc pas dire si la signature est bonne ou mauvaise. Les lignes précédentes (« Signature made … », « using … key <fingerprint> ») indiquent la clé dont vous avez besoin. Il ne s’agit pas d’un échec de la signature, mais d’une clé manquante.
Pourquoi cela se produit
La clé du signataire n’a jamais été importée
fréquenteUne machine neuve, un runner de CI, un `GNUPGHOME` distinct, ou un membre de l’équipe dont vous n’avez jamais reçu la clé.
Pas de récupération automatique des clés
occasionnelleGnuPG ne récupère pas les clés automatiquement tant que `auto-key-retrieve` et un serveur de clés ne sont pas configurés ; de nombreux serveurs de clés ne diffusent plus les ID utilisateur sans vérification.
La sous-clé de signature est plus récente que votre copie
occasionnelleSi le signataire a ajouté une nouvelle sous-clé de signature, une ancienne copie de sa clé publique ne la contient pas. Actualisez la clé depuis sa source.
Comment corriger l’erreur
- 1.
Importer la clé depuis une source de confiance
Importez-la depuis le site web du projet, ses notes de version ou un serveur de clés, et vérifiez l’empreinte par un canal distinct avant de faire confiance aux signatures.
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.
Utiliser les clés publiées par une plateforme
GitHub sert les clés GPG enregistrées par chaque utilisateur à l’adresse `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
Erreurs associées
gpg: BAD signature from "Release Bot <release@example.com>" [ultimate]GnuPG (gpg --verify, git verify-commit / verify-tag)error: gpg failed to sign the dataGit (commit -S, tag -s, commit.gpgsign) with GnuPGerror: gpg.ssh.allowedSignersFile needs to be configured and exist for ssh sign…Git (verify-commit, log --show-signature, merge --verify-signatures) with gpg.format=ssh