Forzar actualización desde repositorio sin firmar

63

Estoy usando un repositorio sin firmar en Ubuntu 16.04 de Debian multimedia:

deb http://www.deb-multimedia.org jessie main

Para instalar deb-multimedia-keyring, estoy ejecutando:

apt-get update && apt-get install deb-multimedia-keyring -y

Esto da un error:

W: GPG error: http://www.deb-multimedia.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
E: The repository 'http://www.deb-multimedia.org jessie InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Shan
fuente

Respuestas:

40

Puede omitir algunas salvaguardas importantes utilizando la siguiente opción:

--allow-unauthenticated

Desde las páginas del manual para apt-get:

--allow-unauthenticated
    Ignore if packages can't be authenticated and don't prompt about
    it. This can be useful while working with local repositories, but
    is a huge security risk if data authenticity isn't ensured in
    another way by the user itself. The usage of the Trusted option for
    sources.list(5) entries should usually be preferred over this
    global override. Configuration Item:
    APT::Get::AllowUnauthenticated.

Pero tenga un poco de precaución al usar esta opción más ampliamente, las medidas de seguridad están en su lugar para proteger su computadora y no limitar su libertad ...

andrew.46
fuente
1
Utilizo Raspbian stretche incluso con la opción E: The repository 'http://ftp.de.debian.org/debian testing InRelease' is not signed.que quiero actualizar desde python 3.5. t 3.6.
Timo
2
me dijo que "esta opción no se puede interpretar junto con las otras opciones" cuando se ejecutasudo apt-get update --allow-unauthenticated
Xerus
27
NOTA: Esto ya no parece funcionar en Ubuntu 18.04 a partir de julio de 2018.
Jay Taylor
@ JayTaylor: Acabo de abrir una nueva máquina virtual para 18.04 y el comando funciona perfectamente aquí. Pastebin aquí: pastebin.com/ygLTnP1C
andrew.46
2
Interesante; quizás haya algo diferente en la máquina. Lo probé detrás de los errores que observé. En cualquier caso, agregar el [trusted=yes]campo a sources.list funcionó. Gracias por su diligencia @ andrew.46 :)
Jay Taylor
62

Puede establecer opciones en su sources.list(ubicado en /etc/apt/sources.list):

deb [trusted=yes] http://www.deb-multimedia.org jessie main

La opción de confianza es lo que desactiva la verificación GPG. Ver man 5 sources.listpara más detalles.

Puede editar el archivo dentro del terminal con vim (o lo que prefiera) o cualquier editor que no sea de terminal como gedit.

Prathu Baronia
fuente
¿Cómo accedemos sources.listdesde la terminal?
fuzzi
1
Se encuentra ubicado en /etc/apt/sources.list. Puede editarlo dentro del terminal con vim (o lo que prefiera) o cualquier editor que no sea de terminal como gedit.
Prathu Baronia
8

Otra solución genérica sería

sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5C808C2B65558117

Nota: No probé la solución con este repositorio, pero lo hice con el repositorio de Skype y funcionó bien.

Otra solución específica para su caso es instalar las llaves

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2012.05.05_all.deb -O deb-multimedia-keyring.deb
sudo dpkg -i multimedia-keyring_all.deb

Como se describe en el paseo completo por Aquí

fady mohamed osman
fuente
3

Si está tratando de obtener un paquete de un repositorio donde empacaron las claves e incluirlas dentro del repositorio y no en otro lugar, puede ser muy molesto descargar e instalar el paquete de claves / llaveros usando dpkg, y es muy difícil hacerlo. de manera fácil de escribir y repetir.

El siguiente script no se recomienda si puede instalar las claves desde un servidor de claves (como se recomienda en otra respuesta usando apt-key adv) o si puede descargarlas de una fuente confiable a través de https e instalar usando apt-key (por ejemplo wget https://trusted.key.site/my-trusted-key.gpg | sudo apt-key add -), pero si no lo hace ' No tiene CUALQUIER otra forma, puede usar esto.

echo "deb http://your.repo.domain/repository/ $(lsb_release -c -s) universe" | sudo tee /etc/apt/sources.list.d/your-repo-name.list

sudo apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update

## if the 'apt update' above fails it is likely due to previously
## having the GPG key and repository on the system, you can clean
## out the old lists with `sudo rm /var/lib/apt/lists/your.repo.domain*`

apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname

## If you ever run `sudo apt-key del your-repos-keyID`
## you may have to `sudo apt remove --purge repo-keyring-pkgname`
## Update should run without the GPG warnings now that the key is installed

apt-get update
apt-get install somepkg-from-repo

Originalmente armé esto porque i3 en su repositorio sur5r hace esto, pero luego descubrí que sus claves están en la lista keyserver.ubuntu.com, por lo que puedo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6evitar todas las molestias adicionales del paquete.

dragon788
fuente
Esta respuesta parece incompleta cuando se enfrenta a Ubuntu 18.04. Allí trata de molestarme diciendo cosas desagradables como ... Release is not valid yet (invalid for another 44min 35s). Updates for this repository will not be applied. Incluso después de ejecutar / var / lib / apt / lists / * things ...
Jürgen Weigert
Eso es simplemente un problema de replicación espejo y no debería afectar la autenticación o firma de paquetes en los repositorios. Dado que 1804 acaba de salir de la versión beta, muchos espejos intentan ponerse al día y el servicio de reflejo puede indicarle que el servidor aún no está totalmente sincronizado.
dragon788
2

Puede obtener el PUBLIC_KEY del servidor de claves y agregarlo a apt-key. Suponiendo que el servidor de claves es pgpkeys.mit.edu, primero debe escribir:

gpg --keyserver pgpkeys.mit.edu --recv-key KEY_IN_ERROR
gpg -a --export KEY_IN_ERROR | sudo apt-key add -

Reemplace la clave KEY_IN_ERROR con la que aparece en su mensaje de error, es decir, 5C808C2B65558117.

Además, si está realmente interesado en agregar un repositorio sin firmar, puede agregar el indicador a en la entrada del repositorio deseado en la lista sources.list de esta manera:

deb [allow-insecure=yes] http://www.deb-multimedia.org jessie main

Esto es realmente útil si desea ajustar su configuración de seguridad para entradas individuales.

leonidas
fuente