Jak mogę usunąć klucz gpg, który dodałem za pomocą apt-key add -?


147

Nie potrzebuję już klucza z kluczy mojego serwera. Czy można to usunąć? Dodałem klucz za pomocą tego polecenia:

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

Dzięki za pomoc


Uznałem to pytanie za przydatne, ponieważ obecnie wywoływany interfejs GUI Ubuntu 18.04 Software & Updates-->Authenticationnie wydaje się działać (nie można usunąć żadnego zaufanego klucza oprogramowania). Zamiast tego należało zastosować podane poniżej polecenia cmli.
— Sun Bear

Odpowiedzi:


198

Najpierw musisz znaleźć identyfikator klucza, który dodałeś. Zrób to za pomocą polecenia:

sudo apt-key list

Wyświetla listę wszystkich posiadanych kluczy, a każdy wpis wygląda następująco:

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

Po ustaleniu, który klucz należy usunąć, użyj polecenia sudo apt-key del <keyid>gdzie <keyid>jest zastąpione rzeczywistym kluczem klucza, który chcesz usunąć z kluczy.

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

@Raymond Nie ma problemu :)
— Nitin Venkatesh

1
Ach, widzę, że unikalny identyfikator znajduje się w pubie oznaczonym linią, a nie w linii oznaczonej jako UID.
— ctrl-alt-delor

6
na wynikach Ubuntu 16.10 wydaje się nieco inaczej:pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
— MXDSP

Wygląda na to, że należy to zaktualizować do 18.04
— kennyB

Po usunięciu klucza napotkałem nowy problem The following signatures couldn't be verified because the public key is not available: NO_PUBKEY, co powinienem zrobić dalej?
— Corey

126

16.10 identyfikator skrótu nie jest już wyświetlany, gdy używasz polecenia list, ale w rzeczywistości jest to ostatnie 8 znaków długiego heksa.

Na przykład identyfikator klucza dla następującego klucza

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

Identyfikator klucza to EFE21092


17
Bardzo pomocny, dziękuję. To jest bardzo nieprzydatne UX.
— SColvin

11
@ Scolvin możesz po prostu zrobić sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"i myślę, że bezpieczniej jest używać całego odcisku palca, keyid może mieć duplikaty (przynajmniej kiedy używasz PGP do e-maili, czytam, że powinieneś udostępnić cały odcisk palca, a nie tylko keyid).
— baptx,

1
Bardzo pomocne, bardzo prawdziwe również dla 17.10!
— Hartmut P.

2
I na 18.04.1.
— Russ Bateman

Dziękuję Ci. Okropna decyzja projektowa.
— Brian Smith

4

Zrobiłem krótki skrypt, aby ułatwić sobie używanie łańcucha zamiast identyfikatora.

Możesz użyć mojego skryptu, jeśli klucz zawiera unikatowy ciąg znaków, który znasz.
np. w moim przypadku dla webmina

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

Jestem pewien, że tylko klucz webmin w moim systemie ma jcameronten skrypt do usunięcia odpowiedniego klucza.

Zapisałem to jako ~/removeAptKey

i uruchom go jako

sudo ./removeAptKey jcameron

Wyjście powinno być coś w rodzaju

KEYID: 11F63C51
OK

Oto mój skrypt:

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

Najpierw otrzymuję dwie górne linie bloku mojego klucza:

  • sudo apt-key list: wyświetla klawisze apt jak zwykle
  • grep '${UNIQUE}' -B 1: weź tylko wiersz zawierający unikatowy ciąg klucza jcameroni -B 1wiersz wcześniej
  • > result.temp: Zapisz go w pliku (który jest później usuwany)

Jeśli to zwróci dokładnie 2 linie (-> dostałem dokładnie 1 klucz), przechodzę dalej:

  • grep 'pub': Teraz weź tylko wiersz z pupidentyfikatorem klucza
  • cut -d " " -f 4: weź 4 słowo tego wiersza (pierwsze to pubdwie spacje, niż ciąg, który szukamy po ``)
  • cut -d "/" -f 2: weź tylko część po /

I wreszcie usuń ten klucz i oczyść

  • apt-key del ${KEYID}(w moim przypadku 11F63C51)
  • rm result.temp: nie potrzebujesz już tego pliku

Uruchomiłem to bez parametru i po prostu wyczyściłem wszystkie moje klucze. ; (
— Gabriel Fair

Jeśli ktoś jeszcze wyczyścił
— Gabriel Fair

Hu? Jak to się stało? Powinien wyjść z „Nie podano nazwy klucza”, jeśli nie było parametru.
— derHugo,

@derHugo nie jestem pewien, ale czy to możliwe, #że winowajcą jest klauzula if?
— odrzucił

@defuzed, jeśli masz na myśli, $#to nie. Zwraca ilość podanych parametrów.
— derHugo

2

Wiem, że mogę się spóźnić, ale po prostu chciałem udostępnić to jedno wierszowe polecenie, aby to osiągnąć.

UWAGA : Działa to tylko wtedy, gdy wyjście jest unikalnym kluczem.


Wersje Ubuntu do 16.04 (AKTUALIZACJA 22.12.2018):

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 "/")

gdzie FOOBARjest nazwa UID.


Wersje Ubuntu od 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}')

gdzie FOOBARjest nazwa UID.


1
Nie jestem pewien, dlaczego, ale wystąpił błąd podczas próby uruchomienia 16.04podanego polecenia. awk: line 1: syntax error at or near {Ale nawiasy klamrowe pasują do siebie, więc nie jestem pewien, dlaczego to nie działa
— Gabriel Fair

@GabrielFair Dzięki za informację, już w czerwcu działał (skopiowałem go z konsoli), ale teraz wygląda na to, że został zaktualizowany i apt-key listformat się zmienił. Teraz wydaje się, że znów działa. (EDYCJA: Pamiętaj, aby uruchomić to jako superużytkownik)
— David Tabernero M.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.