Come posso rimuovere la chiave gpg che ho aggiunto usando apt-key add -?

107

Non ho più bisogno della chiave nel portachiavi del mio server. È possibile rimuoverlo? Ho aggiunto la chiave usando questo comando:

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

Grazie per l'aiuto

    
posta Raymond 24.02.2012 - 05:05

4 risposte

161

Per prima cosa devi trovare l'id della chiave che hai aggiunto. Fai questo con il comando:

sudo apt-key list

Elencherà tutte le chiavi che hai, con ogni voce che assomiglia a questa:

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

Una volta individuata la chiave da rimuovere, utilizzare il comando sudo apt-key del <keyid> dove <keyid> viene sostituito con il keyid effettivo della chiave che si desidera rimuovere dal proprio keyring.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
    
risposta data Nitin Venkatesh 24.02.2012 - 05:59
63

Il 16.10 l'ID della chiave breve non viene più mostrato quando si usa il comando list, ma in realtà sono gli ultimi 8 caratteri dell'esagono lungo.

Quindi, ad esempio, l'ID della chiave per il seguente tasto

/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'ID della chiave sarà EFE21092

    
risposta data Wesam 08.11.2016 - 02:37
3

Ho creato uno script breve per semplificare le cose e utilizzare una stringa anziché l'id.

Puoi usare il mio script se la chiave contiene una stringa univoca che conosci.
esempio nel mio caso per webmin

pub   1024D/11F63C51 2002-02-28
uid                  Jamie Cameron <[email protected]>
sub   1024g/1B24BE83 2002-02-28

Sono sicuro che solo la chiave webmin sul mio sistema ha jcameron di quella che uso questo script per rimuovere la chiave corrispondente.

L'ho salvato come ~/removeAptKey

ed eseguilo come

sudo ./removeAptKey jcameron

L'uscita dovrebbe essere qualcosa come

KEYID: 11F63C51
OK

Ecco il mio 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

Per prima cosa ho le due righe superiori del blocco della mia chiave:

  • sudo apt-key list : elenca le chiavi apt come al solito
  • grep '${UNIQUE}' -B 1 : prendi solo la riga contenente la stringa chiave univoca jcameron e -B 1 la riga prima
  • > result.temp : salvalo in un file (che verrà rimosso in seguito)

Se questo restituisce esattamente 2 righe (- & gt; ha ottenuto esattamente 1 chiave) passo:

  • grep 'pub' : ora prendi solo la riga con l'id della chiave pup
  • cut -d " " -f 4 : prendi la quarta parola di quella riga (la prima è pub di quanti due spazi, che la stringa che seguiamo '')
  • cut -d "/" -f 2 : prendi solo la parte dopo /

E infine cancella questa chiave e pulisci

  • apt-key del ${KEYID} (nel mio caso 11F63C51 )
  • rm result.temp : non ha più bisogno di questo file
risposta data derHugo 06.12.2017 - 19:15
0

So che potrei essere in ritardo, ma volevo solo condividere questo comando su una sola riga per raggiungere questo obiettivo.

NOTA : funziona solo se l'output è una chiave univoca.

Versioni di Ubuntu fino alla 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 "/")

dove FOOBAR è il nome UID.

Versioni di Ubuntu dalla 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}')

dove FOOBAR è il nome UID.

    
risposta data Davdriver 07.06.2018 - 03:33

Leggi altre domande sui tag