Table des matières


Gestion des trousseaux de clés : régler l'erreur « GPG "NO_PUBKEY" »

Méthode générale

Attention apt-key est obsolette utilisez plutôt
wget -O- hhttp://keyserver.ubuntu.com/pks/lookup?op=get&search=0xvotre_n°_de_clé | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/nondudepot.gpg > /dev/null

Lorsque vous ajoutez des dépôts ppa à votre distribution afin de bénéficier de version supérieure de certains logiciels, vous vous trouvez sûrement souvent confronté à un message d'erreur du genre :

W: GPG error: http://ppa.launchpad.net xenial Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY votre_n°_de_clé

Pour pallier ce problème il vous suffit de saisir dans un terminal la commande suivante :

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com votre_n°_de_clé

ou bien :

sudo apt-get install add-apt-key && sudo add-apt-key votre_n°_de_clé
Encore plus simple ! Cette ligne de commande régénère les clés GPG manquantes
sudo apt-get update 2>&1 | sed -ne 's?^.*NO_PUBKEY ??p' | xargs -r -- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys

Port HKP filtré par un firewall

Si le port hkp (11371/tcp) est filtré par un firewall (par exemple au travail), passer en http :

sudo add-apt-key -k hkp://keyserver.ubuntu.com:80 votre_n°_de_clé

Il est également possible de le faire directement dans le fichier idoine, en remplaçant le port par défaut 11371 par 80 en modifiant avec les droits d'administration la ligne correspondante dans le fichier /etc/default/add-apt-key

KEYSERVER=hkp://keyserver.ubuntu.com:80

puis de relancer la commande de la maniere suivante :

sudo add-apt-key votre_n°_de_cle

Il est également possible de saisir:

wget -O- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xvotre_n°_de_clé" | sudo apt-key add -
Si ça ne marche pas utilisez les deux lignes suivantes en remplaçant votre_n°_de_clé par le n° indiqué dans le message d'erreur
gpg --keyserver keyserver.ubuntu.com --recv-keys  votre_n°_de_clé
gpg -a --export votre_n°_de_clé | sudo apt-key add -

Plus simplement, vous pouvez aussi vous créer un petit script que vous appellerez pour ajouter vos clés:
dans votre terminal, tapez :

touch apt-gpg-key && xdg-open apt-gpg-key

puis, dans l’éditeur de texte, copiez le code suivant :

#!/bin/bash

gpg --keyserver keyserver.ubuntu.com --recv-keys $1
gpg --armor --export $1 | sudo apt-key add -

Enregistrez le fichier puis de nouveau dans votre terminal, rendez-le exécutable en faisant :

chmod +x apt-gpg-key

Enfin, lancez le programme en tapant :

sudo ./apt-gpg-key votre_n°_de_clé

gpg: AVERTISSEMENT: le propriétaire du répertoire contenant est peu sûr

Si vous obtenez une erreur du type :

gpg: AVERTISSEMENT: le propriétaire du répertoire contenant est peu
sûr pour le fichier de configuration `/home/votre-nom-utilisateur/.gnupg/gpg.conf'
gpg: les appels aux programmes externes sont désactivés car les permissions
du fichier d'options sont trop peu sûres
gpg: erreur de communication avec le serveur de clés: erreur générale
gpg: la réception depuis le serveur de clés a échoué: erreur générale
gpg: AVERTISSEMENT: le propriétaire du répertoire contenant est peu
sûr pour le fichier de configuration `/home/votre-nom-utilisateur/.gnupg/gpg.conf'
OK

Exécutez simplement :

sudo chown root:root .gnupg/
sudo chown -R root:root .gnupg/

gpg: le délai d'attente du serveur de clés a expiré

Si vous obtenez une erreur du type :

gpg: le délai d'attente du serveur de clés a expiré
gpg: la réception depuis le serveur de clés a échoué: erreur du serveur de clés
  1. Vérifiez d'abord que vous avez internet, par exemple tentez
    ping www.google.com

    et vous verrez bien si vous obtenez une réponse ou non.

  2. Si vous avez Internet, tentez un ping sur le serveur de clés :
    ping keyserver.ubuntu.com

    En fonction de la réponse, vous y verrez plus clair. Si le serveur ne répond pas, c'est qu'il n'est pas en ligne pour maintenance, donc réessayez plus tard.
    Si par contre vous avez un message du type:

    ping: sendmsg: Operation not permitted 

    Le problème vient très probablement de votre pare-feu.
    * Configurez-le pour autoriser les requêtes apt. Ou :
    * désactivez-le le temps de l'ajout de la clé.

  3. Si vous ne le pouvez pas, par exemple si vous êtes sur un Hotspot… faites comme l'indique la section « Erreur de serveur de clés ».

Pour un PPA du site launchpad.net

Une fois un dépôt PPA ajouté, il peut arriver qu'il faille l'authentifier.

Pour la suite des explications et une meilleure compréhension, il sera pris en exemple le dépôt PPA ppa:nilarimogard/webupd81).

Celui-ci contient notamment un logiciel très utile appelé launchpad-getkeys.
Une fois installé et lancé en ligne de commandes :

  • il récupère tout seul toutes les clés d'authentification possibles, évitant du coup toutes les manipulations décrites plus haut.
  • Il répare donc les erreurs de type « missing GPG » de façon très simple.

FIXME contient d'autres logiciels, dont Yad (Yet Another Dialog), XClip et PPA-Purge : désinstaller un paquet automatiquement et proprement qui sont des dépendances de Launchpad-getkeys.

Pour le faire de de façon graphique, procéder comme suit:

Les captures d'écrans associées à cette manipulation peuvent être trouvées sur :
(en) « How do I fix the GPG error “NO_PUBKEY”? » —{ « Comment corriger une erreur GPG "AUCUNE CLÉ PUBLIQUE" » } ; source : forum AskUbuntu.com ; auteur : Agmenor ; 13 novembre 2010.

One Lign installer.

sudo add-apt-repository ppa:webupd8team/y-ppa-manager && sudo apt update sudo apt install launchpad-getkeys && sudo launchpad-getkeys

Si malgré tout le problème persiste

Commencez par forcer les mises à jour sans authentification, pour être sûr de tout avoir.

sudo apt update && sudo apt-get -yf --allow-unauthenticated upgrade 

sauvegardez vos clés .gpg actuelles, au cas où !

Faites un dossier où mettre ça en attendant :

 mkdir ~/gpg-backups 

Virez tout /etc/apt/trusted.gpg.d/ et /etc/apt/trusted.gpg dans le dossier précédemment créé :

sudo mv /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/
sudo mv /etc/apt/trusted.gpg ~/gpg-backups/ 

Installez le gestionnaire / réparateur de PPA y-ppa-manager :

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager && sudo apt update && sudo apt install -y y-ppa-manager

Vous pouvez le lancer en ligne de commande pour voir ses sorties :

y-ppa-manager

ou simplement par son lanceur graphique normal.

Dans Y-ppa-manager, cliquez sur à "Advanced". Des options pour réparer les problèmes de clés manquantes ou de BADSIG vous y sont proposées. Commencez par recharger les clés. En cas de besoin, jetez un œil aux autres choix, ils peuvent être utiles. Soyez patient lors de la sélection d'une option, attendez pour le solliciter de nouveau : il travaille en fond et vous avertira d'une notification une fois sa tâche terminée (si lancé en ligne de commande, vous pouvez contrôler son fonctionnement dans la fenêtre de terminal).

Exporter ses clés de ppa

Il peut être souhaitable d'exporter ses clés de ppa pour une utilisation sur un ordinateur hors-ligne par exemple, pour cela utiliser la commande :

sudo apt-key exportall >nom-de-votre-clé-unifiée.asc

Cette commande créera un fichier avec contenant toutes les clés utilisées dans le système.

Obtenir une clé pour un usage local (sans internet)

Pour obtenir un fichier gpg utilisable sans internet, rendez-vous sur le serveur de clé Ubuntu, dans le champs "Search string", entrez 0xnuméro-de-votre-clé, le numéro de votre clé correspond à l'erreur apt que vous avez rencontrée lorsque vous avez recharger la liste des paquets. Cliquez sur le lien après pub copiez le contenu de la page dans un fichier en lui donnnannt le nom de votre choix avec l'extension gpg. Une fois cela fait, entrez la clé manuellement avec la commande :

sudo apt-key add /chemin/vers/votre/clé/votre-clé.gpg

Ou encore plus simplement avec la commande :

wget -O- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xvotre_n°_de_clé" >votre-clé.gpg

Commande apt-key obsolète

Toutes les options de cette commande sont devenues obsolètes avec la version 22.04 à l'exception de del

 man apt-key
NAME
       apt-key - Deprecated APT key management utility
DESCRIPTION
       Use of apt-key is deprecated, except for the use of apt-key del in maintainer scripts to remove existing keys from the main keyring.
       If such usage of apt-key is desired the additional installation of the GNU Privacy Guard suite (packaged in gnupg) is required.

Exemple de codification incorrecte

wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add - 

La bonne codification devient

 wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc