195 votes

Comment puis-je supprimer la clé gpg que j'ai ajoutée en utilisant apt-key add - ?

Je n'ai plus besoin de la clé dans le trousseau de mon serveur. Est-il possible de la supprimer ? J'ai ajouté la clé en utilisant cette commande :

 curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -

Merci de votre aide

244voto

Wesam Points 2449

Sous la version 16.10, l'identifiant de la clé courte n'est plus affiché lorsque vous utilisez la commande list, mais il s'agit en fait des 8 derniers caractères de l'hexagone long.

Ainsi, par exemple, l'identifiant de la clé suivante

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>

L'identifiant de la clé sera EFE21092

241voto

Adam Millerchip Points 101

Vous devez d'abord trouver l'identifiant de la clé que vous avez ajoutée. Faites-le par la commande :

sudo apt-key list

Il répertorie toutes les clés que vous possédez, chaque entrée ressemblant à ceci :

pub   1024R/B455BEF0 2010-07-29
uid                  Launchpad clicompanion-nightlies

Une fois que vous avez déterminé la clé à supprimer, utilisez la commande sudo apt-key del <keyid> donde <keyid> est remplacé par le keyid réel de la clé que vous voulez retirer de votre trousseau.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$

21voto

lewis4u Points 4206

Mise à jour pour Ubuntu 20.04

après l'exécution

sudo apt-key list

vous devriez obtenir la liste des clés apt :

/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2016-04-12 [SC]
      EB4C 1BFD 4F04 2F6D DDCC  EC91 7721 F63B D38B 4796
uid           [ unknown] Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
sub   rsa4096 2019-07-22 [S] [expires: 2022-07-21]

pub   rsa4096 2017-04-11 [SC] [expired: 2019-09-28]
      D4CC 8597 4C31 396B 18B3  6837 D615 560B A5C7 FF72
uid           [ expired] Opera Software Archive Automatic Signing Key 2017 <packager@opera.com>

pub   rsa4096 2019-09-12 [SC] [expires: 2021-09-11]
      68E9 B2B0 3661 EE3C 44F7  0750 4B8E C3BA ABDC 4346
uid           [ unknown] Opera Software Archive Automatic Signing Key 2019 <packager@opera.com>
sub   rsa4096 2019-09-12 [E] [expires: 2021-09-11]

pub   rsa4096 2017-03-13 [SC]
      8CAE 012E BFAC 38B1 7A93  7CD8 C5E2 2450 0C12 89C0
uid           [ unknown] TeamViewer GmbH (TeamViewer Linux 2017) <support@teamviewer.com>
sub   rsa4096 2017-03-13 [E]

sous uid vous avez le nom de l'application, par exemple :

[ unknown] Opera Software Archive Automatic Signing Key 2019 <packager@opera.com>

et la clé que vous voulez supprimer se trouve au-dessus :

    D4CC 8597 4C31 396B 18B3  6837 D615 560B A5C7 FF72  <-- THAT'S THE KEY
uid           [ expired] Opera Software Archive Automatic Signing Key 2017 <packager@opera.com>

et vous l'enlevez en mettant cette clé entre guillemets doubles ou simples comme ceci :

sudo apt-key del "D4CC 8597 4C31 396B 18B3  6837 D615 560B A5C7 FF72"

5voto

derHugo Points 3116

J'ai fait un court script pour faciliter les choses et utiliser une chaîne de caractères au lieu de l'id.

Vous pouvez utiliser mon script si la clé contient une chaîne unique que vous connaissez.
par exemple, dans mon cas pour webmin

pub   1024D/11F63C51 2002-02-28
uid                  Jamie Cameron <jcameron@webmin.com>
sub   1024g/1B24BE83 2002-02-28

Je suis sûr que seule la clé webmin sur mon système a jcameron puis j'utilise ce script pour supprimer la clé correspondante.

Je l'ai enregistré comme ~/removeAptKey

et l'exécuter en tant que

sudo ./removeAptKey jcameron

La sortie devrait être quelque chose comme

KEYID: 11F63C51
OK

Voici mon script :

#!/bin/bash

function printKeys(){
    echo "Installed keys are"
    echo ""
    sudo apt-key list
}

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

if [[ $# -eq 0 ]]
then
    echo "No key name provided"
    exit 1
fi

UNIQUE=$1

sudo apt-key list | grep "${UNIQUE}" -B 1 > result.temp

LENGTH=$(cat result.temp | wc -l)

if [[ ${LENGTH} -gt 2 ]]
then
    echo "Attention you found more than 1 key. Use a more specific string."
    printKeys
    exit 2
fi

if [[ ${LENGTH} != 2 ]]
then
    echo "Key not found. Doing nothing."
    printKeys
    exit 3
fi

KEYID=$(cat result.temp | grep 'pub' | cut -d " " -f 4 | cut -d "/" -f 2)
echo "KEYID: "$KEYID

apt-key del ${KEYID}

rm result.temp

D'abord, je récupère les deux lignes supérieures du bloc de ma clé :

  • sudo apt-key list : liste les clés apt comme d'habitude
  • grep '${UNIQUE}' -B 1 : prendre uniquement la ligne contenant la chaîne de la clé unique jcameron y -B 1 la ligne avant
  • > result.temp : L'enregistrer dans un fichier (qui sera supprimé par la suite)

Si cela renvoie exactement 2 lignes (-> a obtenu exactement 1 clé), je passe à autre chose :

  • grep 'pub' : Maintenant, prenez seulement la ligne avec le pup id clé
  • cut -d " " -f 4 : prendre le 4ème mot de cette ligne (le premier est pub que viennent deux espaces, que la chaîne que nous cherchons ``)
  • cut -d "/" -f 2 : prendre seulement la partie après /

Et enfin supprimer cette clé et nettoyer

  • apt-key del ${KEYID} (dans mon cas 11F63C51 )
  • rm result.temp : je n'ai plus besoin de ce fichier

3voto

Je sais que je suis peut-être en retard, mais je voulais juste partager cette commande en une ligne pour y parvenir.

NOTE : Cela ne fonctionnera que si la sortie est une clé unique.


Versions d'Ubuntu jusqu'à 16.04 (MISE À JOUR 2018-12-22) :

apt-key del $(apt-key list | awk 'NR=='$(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":")'{print;exit}' | awk '{print $2}' | cut --fields 2 --delimiter "/")

FOOBAR est le nom de l'UID.


Versions d'Ubuntu à partir de 16.10 :

apt-key del $(apt-key list | awk 'NR=='`expr $(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":") - 1`'{print;exit}')

FOOBAR est le nom de l'UID.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X