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 ton aide
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, avec 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>
où <keyid>
est remplacé par le numéro de clé de la clé à supprimer de votre trousseau.
$ Sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
Le 16.10, l'ID de clé courte n'est plus affiché lorsque vous utilisez la commande list, mais il s'agit en réalité des 8 derniers caractères du long hexagone.
Ainsi, par exemple, l'identifiant de clé pour 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) <[email protected]>
L'identifiant de clé sera EFE21092
J'ai fait un court script pour faciliter les choses et en utilisant une chaîne 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 <[email protected]>
sub 1024g/1B24BE83 2002-02-28
Je suis sûr que seule la clé Webmin de mon système a jcameron
que j'utilise ce script pour supprimer la clé correspondante.
Je l'ai enregistré sous le nom ~/removeAptKey
et l'exécuter comme
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
J'obtiens d'abord les deux lignes supérieures du bloc de ma clé:
Sudo apt-key list
: liste les clés apt comme d'habitudegrep '${UNIQUE}' -B 1
: ne prenez que la ligne contenant la chaîne de clé unique jcameron
et -B 1
la ligne précédente> result.temp
: enregistrez-le dans un fichier (qui sera supprimé ultérieurement)Si cela retourne exactement 2 lignes (-> j'ai exactement 1 clé), je passe à autre chose:
grep 'pub'
: Maintenant, ne prenez que la ligne avec l'ID clé pup
name__cut -d " " -f 4
: prend le 4ème mot de cette ligne (le premier est pub
que deux espaces, que la chaîne que nous sommes après ``)cut -d "/" -f 2
: ne prendre que la partie après /
Et enfin supprimer cette clé et le nettoyage
apt-key del ${KEYID}
(dans mon cas, 11F63C51
)rm result.temp
: plus besoin de ce fichierJe sais que je pourrais être en retard, mais je voulais juste partager cette commande d'une ligne pour y parvenir.
NOTE: Cela ne fonctionnera que si le résultat est une clé unique.
versions 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 "/")
où FOOBAR
est le nom de l'UID.
versions Ubuntu à partir de 16h10:
apt-key del $(apt-key list | awk 'NR=='`expr $(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":") - 1`'{print;exit}')
où FOOBAR
est le nom de l'UID.