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

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

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

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

148
задан 11 March 2012 в 21:20

5 ответов

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

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
$
0
ответ дан 11 March 2012 в 21:20

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

0
ответ дан 11 March 2012 в 21:20

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

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


Версии Ubuntu до 16.04 (ОБНОВЛЕНО 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 "/")

где 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.

0
ответ дан 11 March 2012 в 21:20

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

Вы можете использовать мой скрипт, если ключ содержит уникальную строку, которую вы знаете.
например. в моем случае для 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

Вот мой скрипт: [ 1135]

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

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

  • 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: этот файл больше не нужен
0
ответ дан 11 March 2012 в 21:20

Обновление для Ubuntu 20.04

после запуска

sudo apt-key list

вы должны получить список подходящих ключей:

/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2016-04-12 [SC]
      EB4C 1BFD 4F04 2F6D DDCC  EC91 7721 F63B D38B 4796
uid           [ unknown] Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
sub   rsa4096 2019-07-22 [S] [expires: 2022-07-21]

pub   rsa4096 2017-04-11 [SC] [expired: 2019-09-28]
      D4CC 8597 4C31 396B 18B3  6837 D615 560B A5C7 FF72
uid           [ expired] Opera Software Archive Automatic Signing Key 2017 <packager@opera.com>

pub   rsa4096 2019-09-12 [SC] [expires: 2021-09-11]
      68E9 B2B0 3661 EE3C 44F7  0750 4B8E C3BA ABDC 4346
uid           [ unknown] Opera Software Archive Automatic Signing Key 2019 <packager@opera.com>
sub   rsa4096 2019-09-12 [E] [expires: 2021-09-11]

pub   rsa4096 2017-03-13 [SC]
      8CAE 012E BFAC 38B1 7A93  7CD8 C5E2 2450 0C12 89C0
uid           [ unknown] TeamViewer GmbH (TeamViewer Linux 2017) <support@teamviewer.com>
sub   rsa4096 2017-03-13 [E]

под uid у вас есть имя приложения, например:

[ unknown] Opera Software Archive Automatic Signing Key 2019 <packager@opera.com>

и ключ, который вы хотите удалить, находится над ним:

    D4CC 8597 4C31 396B 18B3  6837 D615 560B A5C7 FF72  <-- THAT'S THE KEY
uid           [ expired] Opera Software Archive Automatic Signing Key 2017 <packager@opera.com>

и вы удаляете его, заключая этот ключ в двойные или одинарные кавычки, например:

sudo apt-key del "D4CC 8597 4C31 396B 18B3  6837 D615 560B A5C7 FF72"
13
ответ дан 1 June 2020 в 12:32

Другие вопросы по тегам:

Похожие вопросы: