Antworten:
Zuerst müssen Sie die Schlüssel-ID des von Ihnen hinzugefügten Schlüssels finden. Tun Sie dies mit dem Befehl:
sudo apt-key list
Es werden alle Schlüssel aufgelistet, die Sie haben, wobei jeder Eintrag folgendermaßen aussieht:
pub 1024R/B455BEF0 2010-07-29
uid Launchpad clicompanion-nightlies
Wenn Sie herausgefunden haben, welchen Schlüssel Sie entfernen möchten , verwenden Sie den Befehl sudo apt-key del <keyid>
where, der <keyid>
durch die tatsächliche Schlüssel-ID des Schlüssels ersetzt wird, den Sie aus Ihrem Schlüsselbund entfernen möchten.
$ 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
. Was soll ich als Nächstes tun?
Am 16.10 wird die Kurzschlüssel-ID nicht mehr angezeigt, wenn Sie den Befehl list verwenden, sondern es sind tatsächlich die letzten 8 Zeichen des langen Hexadezimalzeichens.
So zum Beispiel die Schlüssel-ID für den folgenden Schlüssel
/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>
Die Schlüssel-ID lautet EFE21092
sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"
und ich denke, es ist sicherer, den gesamten Fingerabdruck zu verwenden, die Keyid könnte Duplikate haben (zumindest wenn Sie PGP für E-Mails verwenden, sollte ich lesen, dass Sie Ihren gesamten Fingerabdruck und nicht nur die Keyid teilen sollten).
Ich habe ein kurzes Skript erstellt, um die Arbeit zu vereinfachen und anstelle der ID eine Zeichenfolge zu verwenden.
Sie können mein Skript verwenden, wenn der Schlüssel eine eindeutige Zeichenfolge enthält, die Sie kennen.
zB in meinem Fall für Webmin
pub 1024D/11F63C51 2002-02-28
uid Jamie Cameron <jcameron@webmin.com>
sub 1024g/1B24BE83 2002-02-28
Ich bin sicher, nur der Webmin-Schlüssel auf meinem System hat, jcameron
als ich dieses Skript verwende, um den entsprechenden Schlüssel zu entfernen.
Ich habe es gespeichert als ~/removeAptKey
und starte es als
sudo ./removeAptKey jcameron
Die Ausgabe sollte ungefähr so sein
KEYID: 11F63C51
OK
Hier ist mein Drehbuch:
#!/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
Zuerst bekomme ich die oberen zwei Zeilen meines Schlüsselblocks:
sudo apt-key list
: listet die passenden Schlüssel wie gewohnt aufgrep '${UNIQUE}' -B 1
: Nehmen Sie nur die Zeile, die die eindeutige Schlüsselzeichenfolge jcameron
und -B 1
die vorherige Zeile enthält> result.temp
: Speichern Sie es in einer Datei (die später entfernt wird)Wenn dies genau 2 Zeilen ergibt (-> habe genau 1 Taste), gehe ich weiter:
grep 'pub'
: Nehmen Sie jetzt nur die Zeile mit der pup
Schlüssel-IDcut -d " " -f 4
: nimm das 4. Wort dieser Zeile (das erste ist pub
dann zwei Leerzeichen, als die Zeichenkette, hinter der wir stehen ``)cut -d "/" -f 2
: nimm nur den teil danach /
Und schließlich löschen Sie diesen Schlüssel und bereinigen
apt-key del ${KEYID}
(in meinem Fall 11F63C51
)rm result.temp
: brauche diese Datei nicht mehr#
in der if-Klausel der Schuldige ist?
$#
dann nein. Es gibt die Anzahl der angegebenen Parameter zurück.
Ich weiß, dass ich zu spät komme, wollte aber nur diesen einzeiligen Befehl teilen, um dies zu erreichen.
HINWEIS : Dies funktioniert nur, wenn die Ausgabe ein eindeutiger Schlüssel ist.
Ubuntu-Versionen bis 16.04 (AKTUALISIERT am 22.12.2018):
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 "/")
Wo FOOBAR
ist der UID-Name?
Ubuntu-Versionen ab 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}')
Wo FOOBAR
ist der UID-Name?
16.04
Ihnen angegebenen Befehl auszuführen . awk: line 1: syntax error at or near {
Aber die spitzen Klammern stimmen überein, daher bin ich mir nicht sicher, warum dies nicht funktioniert
apt-key list
Format geändert wurde. Jetzt scheint es wieder zu funktionieren. (BEARBEITEN: Denken Sie daran, dies als Superuser auszuführen)
Software & Updates-->Authentication
nicht zu funktionieren scheint (sie kann keinen vertrauenswürdigen Softwareschlüssel entfernen). Stattdessen mussten die unten angegebenen Befehle verwendet werden.