Apt-key add - kullanarak eklediğim gpg anahtarını nasıl kaldırabilirim?


147

Sunucumun anahtarlığındaki anahtara artık ihtiyacım yok. Çıkarmak mümkün mü? Bu komutu kullanarak anahtarı ekledim:

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

Yardım için teşekkürler


Bu soruyu faydalı buldum çünkü şu anda Ubuntu 18.04 GUI adı verilen 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.
Sun Bear,

Yanıtlar:


198

Ö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
$

@Raymond No problemo :)
Nitin Venkatesh

1
Ah, benzersiz kimliğin, kullanıcı etiketli satırda değil pub etiketli satırda olduğunu görüyorum.
ctrl-alt-delor

6
on ubuntu 16.10 sonuçları biraz farklı görünüyor:pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
mxdsp 6:16

Bunun, 18.04
kennyB

Anahtarı sildikten sonra yeni bir sorunla karşılaştım, sonra The following signatures couldn't be verified because the public key is not available: NO_PUBKEYne yapmalıyım?
Corey,

127

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


17
Çok yararlı, teşekkür ederim. Bu son derece yararsızdır UX.
SColvin

11
@SColvin sadece yapabilirsin 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).
baptx

1
Çok yararlı, 17.10 için de çok doğru!
Hartmut P.

2
Ve 18.04.1 için.
Russ Bateman

Teşekkür ederim. Kötü tasarım kararı.
Brian Smith

4

İş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, jcameronbu 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 listeler
  • grep '${UNIQUE}' -B 1: yalnızca benzersiz anahtar dizeyi içeren satırı jcameronve -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 pupanahtar kimliğine sahip satırı alın
  • cut -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

Bunu parametresiz koştum ve tüm tuşlarımı sildim. ; (
Gabriel Fair

Başka birinin anahtarı silinmişse, aşağıdaki talimatları izleyerek bunu çözebildim
Gabriel Fair

Hu? Bu nasıl oldu? Parametre yoksa, "Anahtar adı verilmedi"
ifadesiyle çıkılmalıdır

@derHugo emin değilim ama bunun #nedeni yan tümce suçlu ise olabilir mi?
Nisanda

@defuzed eğer demek istiyorsan $#hayır. Verilen parametrelerin miktarını döndürür.
derHugo

2

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

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

FOOBARUID adı nerede .


1
Neden olduğundan emin değilim, ancak 16.04sağ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
Gabriel Fair

@GabrielFair Farkında olduğunuz için teşekkürler, Haziran ayında çalışmaya devam etti (konsolumdan kopyaladım) ancak şimdi güncellendi ve apt-key listformat değişti. Şimdi tekrar çalışıyor gibi görünüyor. (EDIT: Bunu superuser olarak çalıştırmayı unutmayın)
David Tabernero M.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.