Мне больше не нужен ключ в связке ключей моего сервера. Можно ли его удалить? Я добавил ключ, используя эту команду:
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 -
Спасибо за помощь
На 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 1092uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>
Идентификатор ключа будет EFE21092
Сначала вам нужно найти идентификатор ключа, который вы добавили. Сделайте это с помощью команды:
sudo apt-key list
В нем будут перечислены все ключи, которые у вас есть, причем каждая запись будет выглядеть следующим образом:
pub 1024R/B455BEF0 2010-07-29uid Launchpad clicompanion-nightlies
Как только вы определитесь, какой ключ удалить, используйте команду sudo apt-key del <keyid>
где <keyid>
заменяется фактическим идентификатором ключа, который вы хотите удалить из своей связки ключей.
$ sudo apt-key del B455BEF0$ apt-key list | grep clicompan$
Обновление для 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 4796uid [ 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 FF72uid [ 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 4346uid [ 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 89C0uid [ 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 KEYuid [ 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"
Я сделал короткий скрипт, чтобы упростить задачу и использовать строку вместо идентификатора.
Вы можете использовать мой скрипт, если ключ содержит известную вам уникальную строку.
например, в моем случае для webmin
pub 1024D/11F63C51 2002-02-28uid Jamie Cameron <jcameron@webmin.com>sub 1024g/1B24BE83 2002-02-28
Я уверен, что только ключ webmin в моей системе имеет jcameron
затем я использую этот скрипт для удаления соответствующего ключа.
Я сохранил его как ~/removeAptKey
и запустите его как
sudo ./removeAptKey jcameron
Вывод должен быть чем-то вроде
KEYID: 11F63C51OK
Вот мой сценарий:
#!/bin/bashfunction 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 1fiif [[ $# -eq 0 ]]then echo "No key name provided" exit 1fiUNIQUE=$1sudo apt-key list | grep "${UNIQUE}" -B 1 > result.tempLENGTH=$(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 2fiif [[ ${LENGTH} != 2 ]]then echo "Key not found. Doing nothing." printKeys exit 3fiKEYID=$(cat result.temp | grep 'pub' | cut -d " " -f 4 | cut -d "/" -f 2)echo "KEYID: "$KEYIDapt-key del ${KEYID}rm result.temp
Сначала я получаю две верхние строки блока моего ключа:
sudo apt-key list
: перечисляет подходящие ключи, как обычно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.
Если у вас случайно есть .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
команда переходит к максшлепциг за их ответ здесь.