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


147

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 dell'aiuto


Ho trovato utile questa domanda perché attualmente la GUI di Ubuntu 18.04 chiamata Software & Updates-->Authenticationnon sembra funzionare (non può rimuovere alcuna chiave software affidabile). Invece, dovevano essere usati i cli cmds indicati di seguito.
Sun Bear,

Risposte:


198

Per prima cosa devi trovare l'ID chiave della chiave che hai aggiunto. Fallo con il comando:

sudo apt-key list

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

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

Una volta che hai capito quale chiave rimuovere, usa il comando sudo apt-key del <keyid>dove <keyid>viene sostituito con l'effettivo keyid della chiave che vuoi rimuovere dal tuo portachiavi.

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

@Raymond No problemo :)
Nitin Venkatesh,

1
Ah, vedo che l'ID univoco si trova sulla riga etichettata pub, non sulla linea etichettata uid.
ctrl-alt-delor,

6
su Ubuntu 16.10 i risultati sembrano leggermente diversi:pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
mxdsp

Sembra che questo debba essere aggiornato per 18.04
kennyB il

Dopo aver eliminato la chiave, ho riscontrato un nuovo problema The following signatures couldn't be verified because the public key is not available: NO_PUBKEY, cosa devo fare dopo?
Corey,

127

Il 16.10 l'id tasto corto non viene più mostrato quando si utilizza il comando list, ma in realtà sono gli ultimi 8 caratteri dell'esagono lungo.

Ad esempio, l'id chiave per la chiave seguente

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


17
Molto utile, grazie. Questa è una UX estremamente inutile.
SColvin,

11
@SColvin puoi semplicemente farlo sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"e penso che sia più sicuro usare l'intera impronta digitale, il keyid potrebbe avere duplicati (almeno quando usi PGP per le e-mail, ho letto che dovresti condividere l'intera impronta digitale e non solo il keyid).
Bapt

1
Molto utile, molto vero anche per le 17.10!
Hartmut P.

2
E per 18.04.1.
Russ Bateman,

Grazie. Terribile decisione di progettazione.
Brian Smith,

4

Ho realizzato un breve script per semplificare le cose e usare una stringa anziché l'id.

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

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

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

L'ho salvato come ~/removeAptKey

ed eseguilo come

sudo ./removeAptKey jcameron

L'uscita dovrebbe essere qualcosa di simile

KEYID: 11F63C51
OK

Ecco la mia sceneggiatura:

#!/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

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

  • sudo apt-key list: elenca i tasti apt come al solito
  • grep '${UNIQUE}' -B 1: accetta solo la riga contenente la stringa di chiavi univoca jcamerone -B 1la riga precedente
  • > result.temp: Salvalo in un file (che verrà successivamente rimosso)

Se questo restituisce esattamente 2 righe (-> ho esattamente 1 chiave), passo avanti:

  • grep 'pub': Ora prendi solo la linea con l' pupid chiave
  • cut -d " " -f 4: prendi la quarta parola di quella riga (la prima è pubche arrivano due spazi, rispetto alla stringa che stiamo cercando ``)
  • cut -d "/" -f 2: prendi solo la parte successiva /

E infine cancella questa chiave e pulisci

  • apt-key del ${KEYID}(nel mio caso 11F63C51)
  • rm result.temp: non è più necessario questo file

Ho eseguito questo senza un parametro e ha cancellato tutte le mie chiavi. ; (
Gabriel Fair,

Se a qualcun altro sono state tolte le chiavi, sono stato in grado di risolverlo seguendo queste istruzioni: askubuntu.com/a/145933/13693
Gabriel Fair

Hu? Come è successo? Dovrebbe uscire con un "Nessun nome chiave fornito" se non vi fosse alcun parametro.
derHugo

@derHugo non ne sono sicuro, ma potrebbe essere che la #clausola if that sia il colpevole?
defuzed

@defuzed se vuoi dire $#allora no. Restituisce la quantità di determinati parametri.
derHugo

2

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

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


Versioni di Ubuntu fino al 16.04 (AGGIORNATO 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 "/")

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.


1
Non sono sicuro del perché, ma ho riscontrato un errore quando ho provato a eseguire il 16.04comando fornito. awk: line 1: syntax error at or near {Ma le parentesi angolari corrispondono, quindi non sono sicuro del motivo per cui non funziona
Gabriel Fair il

@GabrielFair Grazie per averlo notato, a giugno ha funzionato (l'ho incollato dalla mia console) ma ora sembra che sia stato aggiornato e il apt-key listformato sia cambiato. Ora sembra funzionare di nuovo. (EDIT: Ricorda di eseguire questo come superutente)
David Tabernero M.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.