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

116

Nie potrzebuję już klucza w breloku mojego serwera. Czy można go usunąć? Dodałem klawisz za pomocą tego polecenia:

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

Dzięki za pomoc

    
zadawane Raymond 24.02.2012, 05:05
źródło

4 odpowiedzi

167

Najpierw musisz znaleźć klucz ID dodanego klucza. Wykonaj to komendą:

sudo apt-key list

Wyświetli listę wszystkich kluczy, które masz, 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> zostanie zastąpione rzeczywistym kluczem klucza, który chcesz usunąć ze swojej bazy kluczy.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
    
odpowiedział Nitin Venkatesh 24.02.2012, 05:59
źródło
70

W dniu 16.10 krótki identyfikator klucza nie jest już wyświetlany, gdy używasz polecenia list, ale w rzeczywistości jest to ostatnie 8 znaków na długim heksie.

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

Kluczowym identyfikatorem będzie EFE21092

    
odpowiedział Wesam 08.11.2016, 02:37
źródło
4

Zrobiłem krótki skrypt, aby ułatwić sobie pracę i używać łańcucha zamiast id.

Możesz użyć mojego skryptu, jeśli klucz zawiera unikalny 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 jcameron niż ten skrypt, aby usunąć odpowiedni klucz.

Zapisałem go jako ~/removeAptKey

i uruchom jako

sudo ./removeAptKey jcameron

Plik ouput powinien być podobny do

KEYID: 11F63C51
OK

Oto mój skrypt:

#!/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=$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."
    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

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

  • sudo apt-key list : zwykle pokazuje klawisze apt
  • grep '${UNIQUE}' -B 1 : weź tylko wiersz zawierający unikalny ciąg klucza jcameron i -B 1 linii przed
  • > result.temp : Zapisz go w pliku (który jest później usuwany)

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

  • grep 'pub' : Teraz weź tylko wiersz z kluczem pup id
  • cut -d " " -f 4 : weź czwarty wyraz tej linii (pierwszym jest pub niż dwa spacje, niż ciąg po "")
  • cut -d "/" -f 2 : weź tylko część za /

I na koniec usuń ten klucz i oczyść

  • apt-key del ${KEYID} (w moim przypadku 11F63C51 )
  • rm result.temp : nie potrzebujesz już tego pliku
odpowiedział derHugo 06.12.2017, 19:15
źródło
1

Wiem, że mogę się spóźnić, ale chciałem tylko udostępnić komendę jednokreskową, aby to osiągnąć.

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

Wersje Ubuntu do 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 $2}' | cut --fields 2 --delimiter "/")

gdzie FOOBAR to 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 FOOBAR to nazwa UID.

    
odpowiedział David Tabernero M. 07.06.2018, 03:33
źródło

Przeczytaj inne pytania na temat tagów