Mensaje de error
gpg: Can't check signature: No public key
También se muestra como
- gpg: Can't check signature: no public key
GnuPG 2.4 escribe «No public key»; las traducciones y las compilaciones más antiguas pueden diferir en el uso de mayúsculas. Los comandos de verificación de Git terminan con un código distinto de cero y transmiten la salida de gpg.
Qué significa
El objeto está firmado y gpg encuentra la firma, pero el anillo de claves no tiene ninguna clave pública que coincida con la huella digital del emisor, así que no puede decir si la firma es buena o mala. Las líneas anteriores («Signature made …», «using … key <fingerprint>») te dicen qué clave necesitas. No es una firma fallida: es una clave que falta.
Por qué ocurre
La clave del firmante no está importada
frecuenteUn equipo recién instalado, un runner de CI, un `GNUPGHOME` aparte o un compañero de equipo cuya clave nunca recibiste.
No hay recuperación automática de claves
ocasionalGnuPG no descarga las claves automáticamente salvo que estén configurados `auto-key-retrieve` y un servidor de claves; muchos servidores de claves ya no sirven los ID de usuario sin verificación.
La subclave de firma es más nueva que tu copia
ocasionalSi el firmante añadió una nueva subclave de firma, una copia antigua de su clave pública no la incluye. Actualiza la clave desde su origen.
Cómo solucionarlo
- 1.
Importar la clave desde una fuente de confianza
Impórtala desde el sitio web del proyecto, las notas de la versión o un servidor de claves, y verifica la huella digital por un canal independiente antes de confiar en las firmas.
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.
Usar las claves que publica una plataforma
GitHub sirve las claves GPG registradas de cada usuario en `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
Errores relacionados
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