मैं कैसे जोड़ सकता हूँ gpg कुंजी जिसे मैंने apt-key ऐड का उपयोग करके जोड़ा था -?


146

मुझे अब अपने सर्वर की कीरिंग में कुंजी की आवश्यकता नहीं है। क्या इसे हटाना संभव है? मैंने इस कमांड का उपयोग करके कुंजी जोड़ी:

 curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -

मदद के लिए धन्यवाद


मुझे यह प्रश्न इसलिए उपयोगी लगा क्योंकि वर्तमान में उबंटू 18.04 GUI कहलाता Software & Updates-->Authenticationहै जो काम नहीं करता है (यह किसी भी विश्वसनीय सॉफ़्टवेयर कुंजी को हटा नहीं सकता है)। इसके बजाय, नीचे दिए गए cli cmds का उपयोग करना पड़ा।
सन बीयर

जवाबों:


198

सबसे पहले आपको आपके द्वारा जोड़ी गई कुंजी की कुंजी आईडी ढूंढनी होगी। कमांड द्वारा ऐसा करें:

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
$

@ रेमंड नो प्रॉब्लम :)
नितिन वेंकटेश

1
आह, मैं देख रहा हूँ कि अद्वितीय आईडी पब लेबल वाली लाइन पर है, न कि लेबल वाली लाइन।
सीटीएल-अल्ट-डेलोर

6
पर ubuntu 16.10 परिणाम थोड़ा अलग लगता है:pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
mxdsp

ऐसा लगता है कि 18.04
केनीबी

कुंजी को हटाने के बाद, मुझे एक नई समस्या का सामना करना पड़ा, मुझे The following signatures couldn't be verified because the public key is not available: NO_PUBKEYआगे क्या करना चाहिए?
कोरी

124

जब आप सूची कमांड का उपयोग करते हैं तो 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 होगी


17
बहुत मददगार, धन्यवाद। यह बेहद अनचाही यूएक्स है।
स्कॉलविन

10
@SColvin आप बस कर सकते हैं sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"और मुझे लगता है कि यह संपूर्ण फिंगरप्रिंट का उपयोग करने के लिए सुरक्षित है, कीड डुप्लिकेट हो सकता है (कम से कम जब आप ईमेल के लिए पीजीपी का उपयोग करते हैं, तो मैं पढ़ता हूं आपको अपना पूरा फिंगरप्रिंट साझा करना चाहिए और न कि सिर्फ कुंजी)।
बैपटक्स

1
बहुत उपयोगी है, बहुत सही 17.10 के लिए भी!
हार्टमुट पी।

2
और 18.04.1 के लिए।
रशियन बेटमैन

धन्यवाद। भयानक डिजाइन निर्णय।
ब्रायन स्मिथ

4

मैंने चीजों को आसान बनाने और आईडी के बजाय स्ट्रिंग का उपयोग करने के लिए एक छोटी स्क्रिप्ट बनाई।

यदि कुंजी में एक अद्वितीय स्ट्रिंग है जिसे आप जानते हैं तो आप मेरी स्क्रिप्ट का उपयोग कर सकते हैं।
उदाहरण के लिए मेरे मामले में 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: अब इस फ़ाइल की आवश्यकता नहीं है

मैं एक पैरामीटर के बिना यह भाग गया और यह सिर्फ मेरी सभी चाबियाँ मिटा दिया। ;
गेब्रियल फेयर

अगर किसी और के पास उनकी चाबियां हैं, तो मैं इन निर्देशों का पालन करके इसे ठीक करने में सक्षम था: askubuntu.com/a/145933/13693
गेब्रियल फेयर

हू? ये कैसे हुआ? यह "कोई महत्वपूर्ण नाम प्रदान नहीं किया गया" के साथ बाहर निकलना चाहिए अगर कोई पैरामीटर नहीं था ..
derHugo

@derHugo को यकीन नहीं है लेकिन क्या ऐसा हो सकता है #कि अगर अपराधी अपराधी है?
15

@defuzed अगर आपका मतलब है $#तो नहीं। यह दिए गए मापदंडों की राशि लौटाता है।
डेरहोगो

2

मुझे पता है कि मुझे देर हो सकती है, लेकिन बस इसे प्राप्त करने के लिए इस एक-लाइन कमांड को साझा करना चाहता था।

नोट : यह केवल तभी काम करेगा जब आउटपुट एक अद्वितीय कुंजी है।


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 "/")

FOOBARUID नाम कहां है


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}')

FOOBARUID नाम कहां है


1
मुझे यकीन नहीं है कि क्यों, लेकिन मुझे एक त्रुटि मिली जब मैंने 16.04आपके द्वारा प्रदान की गई कमांड को चलाने की कोशिश की । awk: line 1: syntax error at or near {लेकिन कोण ब्रेसिज़ मैच करता है, इसलिए मुझे यकीन नहीं है कि यह काम क्यों नहीं करता है
गैब्रियल फेयर

@GabrielFair नोटिंग के लिए धन्यवाद, वापस जून में यह काम कर रहा है (मैं अपने कंसोल से इसे कॉपी-पेस्ट करता हूं) लेकिन अब लगता है कि अद्यतन किया गया है और apt-key listप्रारूप बदल गया है। अब फिर से काम होता दिख रहा है। (EDIT: सुपरसुअर के रूप में इसे चलाना याद रखें)
डेविड टैबरेरो एम।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.