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.