Jak mohu odstranit klíč gpg, který jsem přidal pomocí apt-key add -?

112

Nepotřebuji klíč v keyringu svého serveru. Je možné jej odstranit? Klíč jsem přidal pomocí tohoto příkazu:

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

Děkujeme za pomoc

    
dané Raymond 24.02.2012 05:05

4 odpovědi

165

Nejprve musíte najít identifikátor klíče přidaného klíče. Udělej to příkazem:

sudo apt-key list

Zobrazí se všechny klíče, které máte, přičemž každá položka vypadá takto:

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

Jakmile zjistíte, který klíč se má odstranit, použijte příkazsudo apt-key del <keyid>, kde<keyid> je nahrazen aktuálním klíčem klíče, který chcete odstranit z klíčenky.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
    
odpověděl Nitin Venkatesh 24.02.2012 05:59
66

V 16.10 krátké ID klíče se již nezobrazuje při použití příkazu seznamu, ale ve skutečnosti je to poslední 8 znaků dlouhého hexadecimu.

Takže například ID klíče pro následující klíč

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

ID klíče bude EFE21092

    
odpověděl Wesam 08.11.2016 02:37
3

Udělal jsem krátký skript, který usnadní práci a použiji řetězec místo id.

Můj skript můžete použít, pokud klíč obsahuje jedinečný řetězec, který znáte. např. v mém případě pro webmin

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

Jsem si jistý, že pouze klíč webmin v mém systému májcameron, než používám tento skript k odstranění odpovídajícího klíče.

Uložil jsem jej jako~/removeAptKey

a spusťte jej jako

sudo ./removeAptKey jcameron

Výstup by měl být něco jako

KEYID: 11F63C51
OK

Zde je můj skript:

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

Nejprve dostanu horní dva řádky bloku klíče:

  • sudo apt-key list: uvádí apt klíče jako obvykle
  • grep '${UNIQUE}' -B 1: vezměte pouze řádek obsahující jedinečný řetězec klíčejcameron a-B 1 řádek před
  • > result.temp: Uložte jej do souboru (který je později odebrán)

Pokud se vrátí přesně na 2 řádky (-> má přesně 1 klíč), přesuším se:

  • grep 'pub': Nyní zadejte pouze řádek s identifikátorempup key
  • cut -d " " -f 4: vezměte 4. slovo tohoto řádku (první jepub než dva mezery, než řetězec, který jsme po '')
  • cut -d "/" -f 2: vzít pouze část po/

A nakonec odstranit tento klíč a vyčištění

  • apt-key del ${KEYID} (v mém případě11F63C51)
  • rm result.temp: tento soubor již nepotřebujete
odpověděl derHugo 06.12.2017 19:15
0

Vím, že by mohly být pozdě, ale chtěli se mi podělit o tento jednorázový příkaz, abyste to dosáhli.

POZNÁMKA : Tato funkce bude fungovat, pouze pokud je výstup jedinečným klíčem.

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

, kdeFOOBAR je název UID.

verze 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}')

, kdeFOOBAR je název UID.

    
odpověděl Davdriver 07.06.2018 03:33