जवाबों:
सबसे पहले आपको आपके द्वारा जोड़ी गई कुंजी की कुंजी आईडी ढूंढनी होगी। कमांड द्वारा ऐसा करें:
sudo apt-key list
यह आपके पास मौजूद सभी कुंजियों को सूचीबद्ध करेगा, प्रत्येक प्रविष्टि इस तरह दिख रही है:
pub 1024R/B455BEF0 2010-07-29
uid Launchpad clicompanion-nightlies
एक बार जब आप पता लगा है जो कुंजी को हटाने के लिए, आदेश का उपयोग करें sudo apt-key del <keyid>
जहां <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
आगे क्या करना चाहिए?
जब आप सूची कमांड का उपयोग करते हैं तो 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 होगी
sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"
और मुझे लगता है कि यह संपूर्ण फिंगरप्रिंट का उपयोग करने के लिए सुरक्षित है, कीड डुप्लिकेट हो सकता है (कम से कम जब आप ईमेल के लिए पीजीपी का उपयोग करते हैं, तो मैं पढ़ता हूं आपको अपना पूरा फिंगरप्रिंट साझा करना चाहिए और न कि सिर्फ कुंजी)।
मैंने चीजों को आसान बनाने और आईडी के बजाय स्ट्रिंग का उपयोग करने के लिए एक छोटी स्क्रिप्ट बनाई।
यदि कुंजी में एक अद्वितीय स्ट्रिंग है जिसे आप जानते हैं तो आप मेरी स्क्रिप्ट का उपयोग कर सकते हैं।
उदाहरण के लिए मेरे मामले में 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
Ouput कुछ ऐसा होना चाहिए
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
: सामान्य रूप से उपयुक्त कुंजियों को सूचीबद्ध करता है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
: अब इस फ़ाइल की आवश्यकता नहीं है#
कि अगर अपराधी अपराधी है?
$#
तो नहीं। यह दिए गए मापदंडों की राशि लौटाता है।
मुझे पता है कि मुझे देर हो सकती है, लेकिन बस इसे प्राप्त करने के लिए इस एक-लाइन कमांड को साझा करना चाहता था।
नोट : यह केवल तभी काम करेगा जब आउटपुट एक अद्वितीय कुंजी है।
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 नाम कहां है
16.04
आपके द्वारा प्रदान की गई कमांड को चलाने की कोशिश की । awk: line 1: syntax error at or near {
लेकिन कोण ब्रेसिज़ मैच करता है, इसलिए मुझे यकीन नहीं है कि यह काम क्यों नहीं करता है
apt-key list
प्रारूप बदल गया है। अब फिर से काम होता दिख रहा है। (EDIT: सुपरसुअर के रूप में इसे चलाना याद रखें)
Software & Updates-->Authentication
है जो काम नहीं करता है (यह किसी भी विश्वसनीय सॉफ़्टवेयर कुंजी को हटा नहीं सकता है)। इसके बजाय, नीचे दिए गए cli cmds का उपयोग करना पड़ा।