"No hay clave pública disponible" en la actualización de apt-get

133

Al realizar apt-get update, me sale el siguiente error:

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR

(...)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553
Ese chico brasileño
fuente
2
... y esa cuerda que eludiste es un poco importante. Se había dejado a identificar las teclas que se está perdiendo (suponiendo que la instalación de los paquetes llavero-preferiblemente de confianza de medios que ruda sugerido no ayuda)
Derobert
1
No debes dejar que tu gato camine sobre el teclado así. :-) ⁠
G-Man

Respuestas:

173

Las otras respuestas funcionarán, o no, dependiendo de si la clave '8B48AD6246925553' está presente o no en los paquetes que indican.

Si necesita una clave, debe obtenerla y dónde encontrarla está en un servidor de claves (muy probablemente cualquier servidor de claves lo haga):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
mariotomo
fuente
Esto funcionó para mí también y no otras respuestas aquí ..
Sai Kiran
@starbeamrainbowlabs ahora lo es! =)
Ese chico brasileño
@ThatBrazilianGuy: D
starbeamrainbowlabs
44
¿Hay alguna manera de determinar si la clave recibida es leggit de modo que pueda hacer una operación tan peligrosa como agregar apt-trust global a alguna clave arbitraria? ¿Hay alguna forma de verificar la credibilidad de la clave después de que se recibió? ¿Cuáles son los pasos a seguir para hacer la verificación de clave? Por ejemplo, lo único que tiene es ftp-master.debian.org/keys/ziyi_key_2002.asc, entonces, ¿cómo puede llegar a la clave más actual sin romper la cadena de confianza?
Tino
1
@ThatBrazilianGuy: El hecho de que sea tu pregunta no te da derecho a destrozar una respuesta.
G-Man
76

Le recomiendo que siga la respuesta de @ mariotomo en lugar de los pasos a continuación:


De acuerdo con No hay clave pública disponible para la siguiente ID de clave , esto lo solucionará:

sudo aptitude install debian-archive-keyring

Referencias

Ese chico brasileño
fuente
Los últimos 8 dígitos hexadecimales se comparten con esto, por lo que es probable que se queje de wheezy. Desafortunado de que el OP haya eludido eso: pub 4096R / 46925553 2012-04-27 [caduca: 2020-04-25] uid Debian Archive Clave de firma automática (7.0 / wheezy) <[email protected]>
Martin Dorey
55
¿Es debian-keyringrealmente necesario? Me funcionó con solo debian-archive-keyring.
x-yuri
No es sorprendente que diferentes números hexadecimales requieran diferentes soluciones. Puse comillas alrededor del número en mi búsqueda en Google, para forzar una búsqueda literal de ese número, y llegué a esta página, que solucionó mi problema: reddit.com/r/linux4noobs/comments/4grdo7/… (respuesta de @ mariotomo puede haber funcionado también, no lo intenté)
Michael Scheper
debian-keyringNo es necesario.
x-yuri
38

Yo recomiendo:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update

Esto es mejor que otros enfoques porque no se instala debian-keyring, lo cual es grande y el 99% del tiempo es innecesario.

Greg Alexander
fuente
1
Esto fue todo lo que necesitaba, ¡funcionó muy bien para mí!
Harperville
Trabajar como un encanto !
Wilbeibi
1
Esta fue la mejor solución para mí, ya que encaja mejor con un contenedor Docker. Sin embargo, tenga en cuenta que (al menos en Docker) primero debe instalar este paquete, luego hacer un segundo apt-get updatey luego instalar los paquetes que realmente desea.
Malvineous
Debian 10: Advertencia: 'apt-key update' está en desuso y ya no se debe usar. Nota: en su distribución, este comando no funciona y, por lo tanto, se puede eliminar de forma segura
ejemplo, el
De hecho, es posible que deba instalar debian-archive-keyring incluso si tiene instalado debian-keyring en su última versión
Ángel
17

El error No hay clave pública disponible para los siguientes ID de clave indica un problema de seguridad grave : no se puede verificar la integridad de un paquete del sistema operativo con su clave pública, porque falta su clave pública.

Si el mensaje fuera:

There is no public key available for the following key IDs: 1397BC53640DB551

Puede usar este comando para averiguar qué repositorio usa la clave:

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done

Que en este ejemplo es el repositorio de Google para Chrome:

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

Si confía en Google, su gobierno, etc., debe averiguar dónde está la clave y agregarla con:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
Ivan Ogai
fuente
Arreglado para mí :) ¡Gracias! Pero solo curiosidad, ¿qué estaba mal? ¿Qué hace el primer comando y qué hace el segundo? ¿Debería esto resolver todos los problemas? Mi problema también fue con Google Chrome.
Rohan
¿Y el primer comando cambia algo con gpg? Dice que creó un archivo conf gpg.conf, y no sé si quiero eso.
Rohan
El primero busca la clave en su lista de paquetes para ver el paquete ofensivo. El segundo descarga la clave y la agrega a su sistema. El primer comando no es útil en este caso, pero es bueno como enfoque general.
Marco Sulla
3

Enfrenté el mismo problema en Linux Mint (Kernel Versión 3.13.0-24) y pude resolverlo usando los comandos:

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

Puntos a tener en cuenta:

1) Los comandos se ejecutaron en orden 2) Los comandos se ejecutaron como usuario root

Cortesía de esta respuesta.

Ankur Kumar
fuente
1

Como alternativa:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update
abdiansah.wordpress.com
fuente
66
No anuncies tu blog en tus respuestas. Para eso es tu biografía.
slm
1

Mi respuesta es una ligera actualización (en mi humilde opinión, YMMV) en @mariotomo (a quien voté) en el siguiente script de bash

  • también usa gpg
  • parametriza más
  • (también usa un servidor de claves diferente, aunque en este caso sospecho que hace poca diferencia)

También puede comentar la evallínea para una "ejecución en seco": el scriptlet solo le mostrará lo que pretende hacer, sin hacerlo realmente. Solo asegúrese de cambiar el valor de NO_PUBKEYcada vez que use esto (también puede cambiar KEYSERVERsegún lo desee):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done
TomRoche
fuente
0

Ejecútelo killall -q gpg-agentsi las otras soluciones no funcionan. Puede funcionar

Estaba recibiendo un error similar para un repositorio PPA en Ubuntu 18.04 y después de probar varias soluciones en Internet durante el último mes, me topé con el agente gpg y lo maté. Luego, los repositorios de PPA comenzaron a actualizarse sudo apt-get update. Sé que puede comprometer la seguridad, pero a veces necesitas un paquete de un PPA, y GPG simplemente no te lo permite. Más tarde, inicia el gpg-agent nuevamente y las cosas vuelven a la normalidad.

MSharq
fuente
-1

Esto funcionó para mí:

Remedio rápido:

sudo rm -f /etc/apt/trusted.gpg

( Fuente )

Jakob
fuente