it-swarm-eu.dev

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

Už nepotřebuji klíč v klíčence na mém serveru. Je možné ji odstranit? Klíč jsem přidal pomocí tohoto příkazu:

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

Děkuji za pomoc

158
Raymond

Nejprve musíte najít id klíče klíče, který jste přidali. To provedete příkazem:

Sudo apt-key list

Zobrazí seznam všech klíčů, 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íč odstranit, použijte příkaz Sudo apt-key del <keyid> kde <keyid> je nahrazeno skutečným keyidem klíče, který chcete odstranit z klíčenky.

$ Sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
208
Nitin Venkatesh

V 16.10 již není při použití příkazu list zobrazeno ID krátké klávesy, ale ve skutečnosti je to posledních 8 znaků dlouhého hexu.

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) <[email protected]>

ID klíče bude EFE21092

149
Wesam

Udělal jsem krátký skript, abych věci usnadnil a místo řetězce použil řetězec.

Můj klíč 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 <[email protected]>
sub   1024g/1B24BE83 2002-02-28

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

Uložil jsem to jako ~/removeAptKey

a spusťte to jako

Sudo ./removeAptKey jcameron

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

KEYID: 11F63C51
OK

Zde je můj skript:

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

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

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

Pokud se vrátí přesně 2 řádky (-> dostal přesně 1 klíč), pokračuji dál:

  • grep 'pub': Nyní vezměte pouze řádek s ID klíče pup
  • cut -d " " -f 4: vezměte 4. slovo z tohoto řádku (první je pub, než přijdou dvě mezery, než řetězec, který jsme za ``)
  • cut -d "/" -f 2: vezměte pouze část za /

Nakonec tento klíč vymažte a vyčistěte

  • apt-key del ${KEYID} (v mém případě 11F63C51)
  • rm result.temp: tento soubor již nepotřebuji
4
derHugo

Vím, že bych mohl přijít pozdě, ale chtěl jsem jen sdílet jeden řádkový příkaz, abychom toho dosáhli.

NOTE : Toto bude fungovat, pouze pokud je výstup jedinečný klíč.


buntu verze do 16.04 (AKTUALIZOVÁNO 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 "/")

kde FOOBAR je název UID.


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

kde FOOBAR je název UID.

3