Мне больше не нужен ключ в брелоке моего сервера. Можно ли его удалить? Я добавил ключ, используя следующую команду:
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
Спасибо за помощь
Мне больше не нужен ключ в брелоке моего сервера. Можно ли его удалить? Я добавил ключ, используя следующую команду:
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
Спасибо за помощь
Сначала вам нужно найти ключевой идентификатор добавляемого ключа. Сделайте это по команде:
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
$
В 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) <[email protected]>
Идентификатором ключа будет EFE21092
Я сделал короткий скрипт, чтобы упростить работу и использовать строку вместо идентификатора.
Вы можете использовать мой скрипт, если ключ содержит уникальную строку, которую вы знаете.
например в моем случае для webmin
pub 1024D/11F63C51 2002-02-28
uid Jamie Cameron <[email protected]>
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
: больше не нужен этот файл Я знаю, что могу опоздать, но просто хотел поделиться этой однострочной командой, чтобы добиться этого.
ПРИМЕЧАНИЕ . Это будет работать, только если выход является уникальным.
Версии 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.