¿Cómo soluciono el error GPG "NO_PUBKEY"?


364

Agregué algunos repositorios adicionales con el programa Software Sources. Pero cuando vuelvo a cargar la base de datos del paquete, aparece un error como el siguiente:

W: Error de GPG: http://ppa.launchpad.net confiable InRelease: Las siguientes firmas no se pudieron verificar porque la clave pública no está disponible: NO_PUBKEY 8BAF9A6F

Sé que puedo arreglarlo usando apt-keyun terminal, de acuerdo con la documentación oficial de Ubuntu. Pero me hubiera gustado hacerlo gráficamente. ¿Hay alguna manera de hacer esto sin usar un terminal?



'Un sentido'? Curioso lo que quisiste decir con eso.
Michael Scheper

1
Puede consultar este hilo SO para obtener una solución. Enlace al sitio relacionado
Aniket Thakur

@MichaelScheper '¿Hay algún medio [s] para no abrir una terminal?' = ~ '¿Hay alguna manera de hacerlo sin un terminal?'
Wilf

@Wilf: ¡Oh! No me refiero a la gramática, pero me confundió. De la referencia que acabo de comprobar, 'significa' es un sustantivo singular, y el que quiso decir. dictionary.cambridge.org/dictionary/english/means Pero si usted y Agmentor están usando alguna forma variada de inglés donde la gramática de la pregunta es correcta, me encantaría ver una referencia a ella, solo porque estoy interesado en esa clase de cosas. ☺
Michael Scheper

Respuestas:


211

Con mucho, la forma más sencilla de manejar esto ahora es con Y-PPA-Manager (que ahora integra el launchpad-getkeysscript con una interfaz gráfica).

  1. Para instalarlo, primero agregue el repositorio webupd8 para este programa:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. Actualice su lista de software e instale Y-PPA-Manager:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. Ejecute y-ppa-manager (es decir, escriba y y-ppa-managerluego presione la tecla Intro).

  4. Cuando aparezca la ventana principal de y-ppa-manager, haga clic en "Avanzado".

  5. En la lista de tareas avanzadas, seleccione "Intentar importar todas las claves GPG faltantes" y haga clic en Aceptar.

    Ya terminaste! Como dice el cuadro de diálogo de advertencia cuando comienza la operación, puede tomar bastante tiempo (aproximadamente 2 minutos para mí) dependiendo de cuántos PPA tenga y la velocidad de su conexión.


18
No es realmente útil en un servidor web, ya que esto instala X11. ¡No use este método si está en una edición de servidor, verifique la respuesta de karthick87!
goncalotomas

2
¿Esto permite verificar las claves que se importan, o simplemente está importando todo a ciegas (y por lo tanto confía en todos los que tienen un PPA)?
Paŭlo Ebermann

2
Está importando (y confiando) las claves para cada PPA que ha agregado a su sistema. La suposición es que confía en esos PPA y los ha verificado antes de agregarlos a través de apt.
monotasker

66
Esta respuesta es más fácil , con mucho , y de hecho requiere un menor número de comandos que esta respuesta "gráfica".
jpaugh

1
Pero la pregunta pedía un método gráfico.
monotasker

557

Ejecute los siguientes comandos en la terminal

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

¿Dónde <PUBKEY>está la clave pública que falta para el repositorio 8BAF9A6F?

Luego actualiza

sudo apt-get update

METODO ALTERNATIVO:

sudo gpg --keyserver pgpkeys.mit.edu --recv-key  <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo apt-key add -
sudo apt-get update

Tenga en cuenta que cuando importa una clave como esta, apt-keyle está diciendo al sistema que confía en la clave que está importando para firmar el software que utilizará su sistema. No haga esto a menos que esté seguro de que la clave es realmente la clave del distribuidor del paquete.


2
@ Naruto Eso es normal. Significa que la lista no ha cambiado en el servidor.
ζ--

99
Simplemente puede pasar el NO_PUBKEYvalor como parámetro de claves. por ejemplo, error GPG [...] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi

23
8BAF9A6F <- ¿de dónde sacaste ese número?
Olivier Lalonde

13
El número 8BAF9 ... es lo que ves en el error original. Sería algo así como NO_PUBKEY 8BAF ...
Alex

99
Si alguien manipulara los datos entre el repositorio y yo, y reemplazara cosas que habían firmado, esto terminaría conmigo simplemente agregando la clave que usaron, más o menos a ciegas. Entonces, ¿cuál es el proceso para verificar que la clave sea la correcta?
mc0e

43

Ocurre cuando no tiene una clave pública adecuada para un repositorio.

Para resolver este problema, use este comando:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21

que recupera la clave del servidor de claves ubuntu. Y luego esto:

gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -

que agrega la clave a las claves confiables de apt.

La solución se puede encontrar aquí y aquí y aquí .


44
Si hkp: //keyserver.ubuntu.com no funciona, use este pgpkeys.mit.eduservidor.
RajaRaviVarma

1
Esta respuesta resolvió mi problema con el repositorio de Kylin. El método de entrada sogou pinyin agregó fuente a mi /etc/apt/sources.list.d/carpeta, pero aparentemente no importó la clave gpg. Buena respuesta, simple y al grano, +1!
Sergiy Kolodyazhnyy

1
¡Gracias! Me funcionó para resolver el problema del repositorio php.
Akash Agarwal

1
Esta respuesta resolvió mi actualización parahttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw

y bastante posible, que no haya generado la clave para su sistema antes. por lo tanto, antes de seguir los pasos anteriores, use - gpg --gen-key (referencias - packaging.ubuntu.com/html/getting-set-up.html )
parasite

35

Necesita obtener e importar la clave.

Para obtener la clave de un PPA, visite la página Launchpad de PPA. En cada página de PPA en Launchpad encontrará este enlace (2), después de hacer clic en 'Detalles técnicos sobre este PPA' (1):

imagen 1

Sígalo y haga clic en el enlace de ID de clave (3):

imagen 2

Guarde la página, este es su archivo clave.


Ahora es el momento de importarlo:

  • Applications > Software Center,
  • Edit > Software sources...,
  • Ingresa tu contraseña,
  • Vaya a la Authenticationpestaña y haga clic en Import Key File..., finalmente
  • Seleccione el archivo de clave guardado y haga clic en OK.

1
No pierdas tu tiempo, mira la respuesta a continuación.
Felipe

55
@FelipeMicaroniLalli, la pregunta era cómo agregar una clave pública utilizando la GUI, no la terminal, por lo que esta respuesta fue perfecta.
Chris Woods

Ahora es mucho más fácil y rápido hacer esto con y-ppa-manager (también una aplicación gui). Vea mi respuesta a continuación.
monotasker

1
OK, pero ¿y si el repositorio no es un ubuntu ppa? Por ejemplo, Intel ejecuta su propio repositorio para controladores de hardware de video en download.01.org
mc0e

Gran guía paso a paso, muchas gracias! realmente útil para alguien que no pudo agregar la clave a través de apt-key.
Roy Ling

12

apt solo puede manejar 40 claves en /etc/apt/trusted.gpg.d. 41 claves y obtendrá el error GPG "no se encontró ninguna clave pública" incluso si sigue todos los pasos para agregar las claves faltantes.

Verifique si hay claves no utilizadas en este archivo de ppa (s) que ya no usa. Si todos están en uso, considere eliminar algunos ppa (s) junto con los archivos de claves correspondientes en /etc/apt/trusted.gpg.d

Además, usando

sudo apt-key adv

Se considera un riesgo de seguridad y no se recomienda ya que está " socavando todo el concepto de seguridad, ya que esta no es una forma segura de recibir claves por varias razones (como: hkp es un protocolo de texto sin formato, se pueden falsificar claves cortas e incluso largas, ... ) ". http://ubuntuforums.org/showthread.php?t=2195579

Creo que la forma correcta de agregar claves faltantes (por ejemplo 1ABC2D34EF56GH78) es

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -

1
Me resultó más fácil eliminar todas las claves de /etc/apt/trusted.gpg.d y luego proceder a la respuesta aceptada askubuntu.com/a/386003/284664
enero

@mchid ¿Puede por favor citar un documento / url que habla sobre este límite de 41 claves?
SebMa

@SebMa El enlace se publica en mi respuesta y hace referencia a un error en Debian que se vio afectado por este límite. Aquí hay un ancla para la publicación real dentro del enlace que menciona esto: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 No estoy seguro de si existe documentación real sobre esto, pero el número 40 puede haber sido utilizado porque "40 "se traduce como" mucho "en muchos idiomas diferentes.
mchid

@SebMa Sin embargo, el límite existe o existió en el momento de esta respuesta y durante algún tiempo también. Personalmente, he experimentado este límite de 41 claves y lo he solucionado eliminando claves no utilizadas para agregar una nueva clave cuando ya existían 40 claves para evitar este error.
mchid


9

Hay un pequeño script empaquetado en el PPA WebUpd8 que vincularé como una sola descarga .deb para que no tenga que agregar el PPA completo, que importa automáticamente todas las claves GPG faltantes.

Descargue e instale Launchpad-getkeys (ignore el ~ natty en su versión, funciona con todas las versiones de Ubuntu desde Karmic hasta Oneiric). Una vez instalado, abra una terminal y escriba:

sudo launchpad-getkeys

Si está detrás de un proxy, las cosas son un poco más complicadas, así que vea esto para obtener más información


1
De hecho es lo que hago ahora, ya que vi este programa presentado en su sitio web. Sin embargo, el objetivo de la pregunta era saber cómo hacerlo de forma gráfica.
Agmenor

El script launchpad-getkeys ahora está integrado en el programa Y-PPA-manager. launchpad.net/~webupd8team/+archive/y-ppa-manager
monotasker

5

Enfrenté el mismo problema al instalar Heroku. El siguiente enlace resolvió mi problema:

http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html

Después de solucionar el NO_PUBKEYproblema, el siguiente problema permaneció

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <release@heroku.com>

Para solucionarlo, ejecuté los siguientes comandos en la terminal:

sudo -i  
apt-get clean  
cd /var/lib/apt  
mv lists lists.old  
mkdir -p lists/partial  
apt-get clean  
apt-get update  

Fuente - Enlace para resolverlo


4

Asegúrate de haber apt-transport-httpsinstalado:

dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; 
sudo apt-get install apt-transport-https -y" 

Añadir repositorio:

curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - 
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list 

Instalar Skype para Linux:

sudo apt-get update 
sudo apt-get install skypeforlinux -y

Fuente: https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756


3

De manera más general, el siguiente método debería funcionar para cada repositorio. En primer lugar, busque, con la ayuda eventual de un motor de búsqueda, un texto en el sitio web del proveedor del programa que tenga el siguiente aspecto:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----

Tal texto se muestra, por ejemplo, en http://deb.opera.com . Copie el pasaje, péguelo en un archivo vacío que cree en su escritorio. Esto da como resultado el archivo de clave.

Luego continúe con la importación de la clave:

  • Aplicaciones> Centro de software
  • Editar> Fuentes de software ..., ingrese la contraseña
  • Pestaña Autenticación, haga clic en 'Importar archivo de clave ...'
  • Seleccione el archivo de clave guardado y haga clic en 'Aceptar'.

Ahora puede eliminar el archivo de clave creado anteriormente.


3

¡Bueno! Finalmente encontré el camino!

He probado todos los métodos para corregir el error GPG NO_PUBKEY y nada funciona para mí.

He eliminado todo el contenido de la carpeta /etc/apt/trusted.gpg.d

cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update

Y uso el método Y-PPA-Manager porque soy demasiado vago para crear todos los pubkey's manualmente (demasiados): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

ejecute sudo apt-get update nuevamente y finalmente todo funciona muy bien ahora. Tanques!

Fuente basada: publicación # 17 en https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540


Esto fue lo único que funcionó para mí también. Presumiblemente un archivo clave dañado en alguna parte?
donnek

0

Tuve el mismo problema con el cliente Updater de DynDNS.

Resulta que solo fueron claves caducadas.

La reinstalación del software (descargando uno nuevo .debdel sitio web, luego usando el Centro de software para reinstalar) solucionó el problema.

Mensaje de error para referencia:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.