Как удалить gpg-ключ, который я добавил с помощью apt-key add -?

115

Мне больше не нужен ключ в брелоке моего сервера. Можно ли его удалить? Я добавил ключ, используя следующую команду:

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

Спасибо за помощь

    
задан Raymond 24.02.2012 в 04:05
источник

4 ответа

167

Сначала вам нужно найти ключевой идентификатор добавляемого ключа. Сделайте это по команде:

sudo apt-key list

В нем будут перечислены все ключи, которые у вас есть, причем каждая запись выглядит следующим образом:

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

Как только вы выяснили, какой ключ для удаления, используйте команду sudo apt-key del <keyid> , где <keyid> заменяется фактическим ключом ключа, который вы хотите удалить из вашего ключа.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
    
ответ дан Nitin Venkatesh 24.02.2012 в 04:59
источник
69

В 16.10 идентификатор короткого ключа больше не отображается при использовании команды list, но на самом деле это последние 8 символов длинного шестнадцатеричного кода.

Итак, например, идентификатор ключа для следующего ключа

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

Идентификатором ключа будет EFE21092

    
ответ дан Wesam 08.11.2016 в 01:37
источник
4

Я сделал короткий скрипт, чтобы упростить работу и использовать строку вместо идентификатора.

Вы можете использовать мой скрипт, если ключ содержит уникальную строку, которую вы знаете.
например в моем случае для webmin

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

Я уверен, что только ключ webmin в моей системе имеет jcameron , чем я использую этот скрипт для удаления соответствующего ключа.

Я сохранил его как ~/removeAptKey

и запустите его как

sudo ./removeAptKey jcameron

Вывод должен быть чем-то вроде

KEYID: 11F63C51
OK

Вот мой сценарий:

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

Сначала я получаю верхние две строки блока моего ключа:

  • sudo apt-key list : перечисляет ключи apt как обычно
  • grep '${UNIQUE}' -B 1 : взять только строку, содержащую уникальную ключевую строку jcameron и -B 1 , перед
  • > result.temp : сохранить его в файле (который позже удален)

Если это возвращает ровно 2 строки (- > получил ровно 1 ключ), я двигаюсь дальше:

  • grep 'pub' : Теперь возьмите только строку с идентификатором ключа pup
  • cut -d " " -f 4 : возьмите 4-е слово этой строки (первый из них pub , чем два пробела, чем строка, которую мы после '')
  • cut -d "/" -f 2 : взять только часть после /

И, наконец, удалите этот ключ и очистите

  • apt-key del ${KEYID} (в моем случае 11F63C51 )
  • rm result.temp : больше не нужен этот файл
ответ дан derHugo 06.12.2017 в 18:15
источник
1

Я знаю, что могу опоздать, но просто хотел поделиться этой однострочной командой, чтобы добиться этого.

ПРИМЕЧАНИЕ . Это будет работать, только если выход является уникальным.

Версии Ubuntu до 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 "/")

где FOOBAR - это имя UID.

версии Ubuntu от 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}')

где FOOBAR - это имя UID.

    
ответ дан David Tabernero M. 07.06.2018 в 01:33
источник

Ознакомьтесь с другими вопросами по меткам