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


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

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

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


111
2018-02-24 04:05


происхождения




ответы:


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

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
$

164
2018-02-24 04:59



@Raymond Нет проблем :) - Nitin Venkatesh
Ах, я вижу, что уникальный идентификатор находится в строке с надписью pub, а не в строке, обозначенной uid. - ctrl-alt-delor
на ubuntu 16.10 результаты кажутся немного разными: pub rsa4096 2012-05-11 [SC] 8439 .... uid .... - mxdsp


В 16.10 идентификатор короткого ключа больше не отображается при использовании команды списка, но на самом деле это последние 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


65
2017-11-08 01:37



Очень полезно, спасибо. Это чрезвычайно бесполезный UX. - SColvin
@SColvin вы можете просто сделать sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092" и я думаю, что безопаснее использовать весь отпечаток пальца, ключ может иметь дубликаты (по крайней мере, когда вы используете PGP для электронных писем, я читаю, что вы должны делиться всем своим отпечатком пальца, а не только с keyid). - baptx
Очень полезно, очень верно и для 17.10! - Hartmut


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

Вы можете использовать мой скрипт, если ключ содержит уникальную строку, которую вы знаете.
например в моем случае для 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: возьмите четвертое слово этой строки (первое pub чем приходят два пробела, чем строка, которую мы после ``)
  • cut -d "/" -f 2: принимать только часть после / 

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

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

3
2017-12-06 18:15





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

ЗАМЕТКА: Это будет работать, только если выход является уникальным ключом.


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.


0
2018-06-07 01:33