Как я могу удалить ключ gpg, который я добавил, используя apt-key add -?
Мне больше не нужен ключ в связке ключей моего сервера. Можно ли это убрать? Я добавил ключ, используя эту команду:
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
Спасибо за помощь
8 ответов
Сначала вам нужно найти идентификатор ключа добавленного вами ключа. Сделайте это командой:
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) <cdimage@ubuntu.com>
Идентификатор ключа будет EFE21092
Обновление для Ubuntu 20.04
после бега
sudo apt-key list
вы должны получить список ключей apt:
/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"
Я сделал короткий скрипт, чтобы все было проще, и использовал строку вместо идентификатора.
Вы можете использовать мой скрипт, если ключ содержит уникальную строку, которую вы знаете.
например, в моем случае для вебмин
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
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
: этот файл больше не нужен
Я знаю, что могу опоздать, но просто хотел поделиться этой однострочной командой, чтобы добиться этого.
ПРИМЕЧАНИЕ. Это будет работать только в том случае, если вывод является уникальным ключом.
Версии 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.
Я сделал это,
sudo apt-key list
Найдите ключ с истекшим сроком действия, а затем удалите его, в моем случае
sudo apt-key del "31CF B0B6 5659 B5D4 0DEE C98D DFA1 75A7 5104 960E"
Тогда сделайте
sudo apt update
Удаленный ключ скажет, что он недоступен, обратите внимание на эту строку, в моем случае DFA175A75104960E
Затем обновите ключ следующим образом, для моего случая требуется обновление DFA175A75104960E,
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DFA175A75104960E
Должно работать сейчас.
Если у вас есть
.asc
ключевой файл, вы можете быть уверены, что удаляете правильный ключ с помощью такой команды. (Заменять
mykey.asc
с файлом ключа ниже.)
apt-key del "$(gpg -n -q --import --import-options import-show mykey.asc | grep '^pub' -A 1 | tail -n 1 | xargs)"
Эта команда работает в Ubuntu 20.04. Кредит для
gpg
Команда обращается к maxschlepzig за ответом здесь .
Возможно, я что-то упускаю... но вы также можете использовать графический интерфейс в настройках программы обновления программного обеспечения: