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

105

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

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

Merci pour votre aide

    
posée Raymond 24.02.2012 - 05:05
la source

4 réponses

160

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

sudo apt-key list

Il listera toutes les clés que vous avez, chaque entrée ressemblant à ceci:

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

Une fois que vous avez compris la clé à supprimer, utilisez la commande sudo apt-key del <keyid><keyid> est remplacé par le keyid réel de la clé que vous souhaitez supprimer de votre trousseau de clés.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
    
réponse donnée Nitin Venkatesh 24.02.2012 - 05:59
la source
61

Le 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 du long hex.

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>

La clé sera EFE21092

    
réponse donnée Wesam 08.11.2016 - 02:37
la source
3

J'ai fait un court script pour faciliter les choses et utiliser une chaîne plutôt que l’identifiant.

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 de mon système contient jcameron que j'utilise ce script pour supprimer la clé correspondante.

Je l'ai enregistré sous la forme ~/removeAptKey

et lancez-le comme

sudo ./removeAptKey jcameron

La sortie devrait être quelque chose comme

KEYID: 11F63C51
OK

Voici mon script:

#!/bin/bash


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

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

UNIQUE=

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."
    exit 2
fi

if [[ ${LENGTH} != 2 ]]
then
    echo "Key not found. Doing nothing."
    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

Je reçois d’abord 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 : ne prend que la ligne contenant la chaîne de clé unique jcameron et -B 1 la ligne avant
  • > result.temp : Enregistrez-le dans un fichier (qui sera supprimé ultérieurement)

Si cela retourne exactement 2 lignes (- & gt; a exactement 1 clé), je bouge:

  • grep 'pub' : Prenez seulement la ligne avec l'identifiant de clé pup
  • cut -d " " -f 4 : prenez le 4ème mot de cette ligne (le premier est pub que ne le sont deux espaces, la chaîne que nous recherchons '')
  • cut -d "/" -f 2 : ne prend que la partie après /

Et enfin supprimer cette clé et nettoyer

  • apt-key del ${KEYID} (dans mon cas 11F63C51 )
  • rm result.temp : vous n'avez plus besoin de ce fichier
réponse donnée derHugo 06.12.2017 - 19:15
la source
0

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

REMARQUE : cela ne fonctionnera que si la sortie est une clé unique.

Versions d'Ubuntu jusqu'à 16.04:

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

FOOBAR est le nom UID.

Versions Ubuntu à partir du 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 UID.

    
réponse donnée Davdriver 07.06.2018 - 03:33
la source

Lire d'autres questions sur les étiquettes