Yanıtlar:
Öncelikle eklediğiniz anahtarın anahtar kimliğini bulmanız gerekir. Bunu komutla yapın:
sudo apt-key list
Her girişte şöyle göründüğünde sahip olduğunuz tüm tuşları listeler:
pub 1024R/B455BEF0 2010-07-29
uid Launchpad clicompanion-nightlies
Kaldırmak hangi anahtar anladım sonra, komutunu kullanın da anahtarlığınıza kaldırmak istediğiniz anahtarın gerçek KeyID ile değiştirilir.sudo apt-key del <keyid>
<keyid>
$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY
ne yapmalıyım?
16.10'da, liste komutunu kullandığınızda kısa anahtar kimliği artık gösterilmez, ancak aslında uzun altıgenin son 8 karakteridir.
Örneğin, aşağıdaki anahtarın anahtar kimliği
/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>
Anahtar kimliği EFE21092 olacak
sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"
ve tüm parmak izini kullanmanın daha güvenli olduğunu düşünüyorum, keyid'in kopyaları olabilir (en azından e-postalar için PGP kullandığında, sadece parmak izini değil tüm parmak izini paylaşmalısın).
İşleri kolaylaştırmak ve kimlik yerine bir dize kullanmak için kısa bir komut dosyası yaptım.
Anahtar bildiğiniz benzersiz bir dize içeriyorsa betiğimi kullanabilirsiniz.
örneğin webmin için benim durumumda
pub 1024D/11F63C51 2002-02-28
uid Jamie Cameron <jcameron@webmin.com>
sub 1024g/1B24BE83 2002-02-28
Yalnızca sistemimdeki webmin anahtarının, jcameron
bu anahtarı kaldırmak için bu komut dosyasını kullandığımdan daha fazla olduğuna eminim .
Olarak sakladım ~/removeAptKey
ve olarak çalıştırın
sudo ./removeAptKey jcameron
Çıkma gibi bir şey olmalı
KEYID: 11F63C51
OK
İşte betiğim:
#!/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
İlk önce anahtarımın bloğunun üst iki satırını alıyorum:
sudo apt-key list
: apt tuşlarını her zamanki gibi listelergrep '${UNIQUE}' -B 1
: yalnızca benzersiz anahtar dizeyi içeren satırı jcameron
ve -B 1
önceki satırı> result.temp
: Bir dosyaya kaydedin (daha sonra kaldırılır)Bu tam olarak 2 satır döndürürse (-> tam olarak 1 anahtar var) Devam ediyorum:
grep 'pub'
: Şimdi sadece pup
anahtar kimliğine sahip satırı alıncut -d " " -f 4
: bu çizginin 4. kelimesini alın (ilki, pub
`` sonrası olduğumuz dizgiden daha çok iki boşluk gelir)cut -d "/" -f 2
: sonra sadece rol al /
Ve sonunda bu anahtarı sil ve temizle
apt-key del ${KEYID}
(benim durumumda 11F63C51
)rm result.temp
: artık bu dosyaya gerek yok#
nedeni yan tümce suçlu ise olabilir mi?
$#
hayır. Verilen parametrelerin miktarını döndürür.
Gecikebileceğimi biliyorum, ancak bunu başarmak için bu tek satırlık komutu paylaşmak istedim.
NOT : Bu, yalnızca çıktı benzersiz bir anahtarsa işe yarar.
16.04'e kadar Ubuntu sürümleri (GÜNCELLEME 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 adı nerede .
16.10'dan itibaren Ubuntu sürümleri:
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 adı nerede .
16.04
sağladığınız komutu çalıştırmayı denediğimde bir hatayla karşılaştım . awk: line 1: syntax error at or near {
Ancak köşebentler aynı, bu yüzden neden işe yaramadığından emin değilim
apt-key list
format değişti. Şimdi tekrar çalışıyor gibi görünüyor. (EDIT: Bunu superuser olarak çalıştırmayı unutmayın)
Software & Updates-->Authentication
çalışmıyor (herhangi bir güvenilir yazılım anahtarını kaldıramıyor). Bunun yerine, aşağıda verilen uç cm'lerin kullanılması gerekiyordu.