Apt-get güncellemesinde “ortak anahtar yok”


133

Yaparken apt-get updateaşağıdaki hatayı alıyorum:

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR

(...)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553

2
... ve yardım ettiğin dize önemli bir parça. Hangi anahtarların eksik olduğunuzu belirlememize izin verir (anahtarlık paketlerini - tercihen güvenilir medyadan - önerilen
ruda'nın

1
Kedinizin klavyede böyle yürümesine izin vermemelisiniz. :-) ⁠
G-Man

Yanıtlar:


173

Diğer cevaplar, '8B48AD6246925553' anahtarının gösterdikleri paketlerde bulunup bulunmadığına bağlı olarak çalışacaktır.

Bir anahtara ihtiyacınız varsa, o anahtara sahip olmalısınız ve onu nerede bulacağınız, o bir anahtar sunucusudur (büyük olasılıkla herhangi bir anahtar sunucusu yapacaktır):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553

Bu benim için de işe yaradı ve burada başka cevaplar yoktu ..
Sai Kiran

@starbeamrainbowlabs şimdi oldu! =)
Bu Brezilyalı Adam

@ThatBrazilianGuy: D
starbeamrainbowlabs

4
Alınan anahtarın okunaklı olup olmadığını belirlemenin herhangi bir yolu var mı, öyle ki bazı keyfi anahtara global apt-trust eklemek gibi tehlikeli bir işlemi yapabilirim? Anahtarın alındıktan sonra güvenilirliğini kontrol etmenin bir yolu var mı? Anahtar doğrulamasını yapmak için gerçekleştirilecek adımlar nelerdir? Örneğin, sahip olduğunuz tek şey ftp-master.debian.org/keys/ziyi_key_2002.asc'dır , peki güven zincirini kırmadan en güncel anahtara nasıl ulaşırsınız ?
Tino,

1
@ThatBrazilianGuy: Sizin sorunuzun bu gerçeği size bir cevabı tahrif etme hakkı vermez.
G-Man

76

Aşağıdaki adımları yerine @ mariotomo'nun cevabını takip etmenizi tavsiye ederim:


Göre aşağıdaki anahtar kimliği için hiçbir ortak anahtar yoktur , bunu çözecektir:

sudo aptitude install debian-archive-keyring

Referanslar


Son 8 onaltılık rakam bununla paylaşılıyor, bu yüzden büyük olasılıkla wheezy hakkında şikayet ediyor. OP’nin talihsizliği, aşağıdakilere karar verdi: pub 4096R / 46925553 2012-04-27 [sona erme tarihi: 2020-04-25] uid Debian Arşivi Otomatik İmzalama Anahtarı (7.0 / wheezy) <ftpmaster@debian.org>
Martin Dorey

5
debian-keyringgerçekten gerekli? Sadece benim için çalıştı debian-archive-keyring.
x-yuri

Şaşırtıcı olmayan bir şekilde, farklı onaltılık sayılar farklı çözümler gerektirebilir. Söz konusu numarayı bir aramaya zorlamak için Google aramamdaki numaraya tırnak işaretleri koydum ve sorunumu düzelten bu sayfaya girdim : reddit.com/r/linux4noobs/comments/4grdo7/… (@ mariotomo kullanıcısının yanıtı) çalışmış olabilir çok-I) deneyin vermedi
Michael Scheper

debian-keyringedilir değil gerekli.
x-yuri,

38

Ben tavsiye ediyorum:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update

Bu, diğer yaklaşımlardan daha iyidir, çünkü kurulmaz debian-keyring, ki bu büyük ve zamanın% 99'udur.


1
Tüm ihtiyacım olan buydu - benim için harika çalıştı!
harperville,

Cazibe gibi çalış!
Wilbeibi,

1
Bu benim için daha iyi bir çözümdü, çünkü bir Docker konteynerine daha iyi uyuyordu. Ancak o zaman bir saniye yapmak, ilk sadece bu paketi yüklemek zorunda (en azından Docker olarak) dikkat apt-get update, o zaman gerçekten istediğiniz paketleri yükleyin.
Malvineous

Debian 10: Uyarı: 'apt-key update' kaldırılmıştır ve artık kullanılmamalıdır! Not: Dağıtımınızda bu komut işlem
dışıdır

Aslında, debian-keyring'i en son sürümüne kurmuş olsanız bile debian-key-keyring'i kurmanız gerekebilir
Ángel

17

Hata Aşağıdaki anahtar kimlikleri için açık anahtar yok, ciddi bir güvenlik sorununa işaret ediyor: ortak anahtar eksik olduğundan bir işletim sistemi paketi açık anahtarla bütünlük açısından kontrol edilemiyor.

Mesaj olsaydı:

There is no public key available for the following key IDs: 1397BC53640DB551

Bu komutu, hangi havuzun anahtarı kullandığını bulmak için kullanabilirsiniz:

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done

Bu örnekte, Google’ın Chrome için olan deposu:

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

Google’a, hükümetine vb. Güveniyorsanız, anahtarın nerede olduğunu bulup eklemeniz gerekir:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -

Benim için düzeltildi :) Teşekkürler! Ama sadece merak ediyorum, sorun neydi? İlk komut ne yapar ve ikinci komut ne yapar? Bu tüm sorunları çözmeli mi? Sorunum aynı zamanda Google Chrome ile oldu.
Rohan

Ve ilk komut gpg ile bir şey değiştirir mi? Bazı gpg.conf dosyasını oluşturduğunu söylüyor ve bunu isteyip istemediğimi bilmiyorum.
Rohan

Birincisi, sorunlu paketi görmek için paketler listenizdeki anahtarı arar. İkincisi anahtarı indirir ve sisteminize ekler. İlk komut bu durumda yararlı değildir, ancak genel bir yaklaşım kadar iyidir.
Marco Sulla

3

Linux Mint'te de aynı problemle karşılaştım (Çekirdek 3.13.0-24) ve bu komutları kullanarak sorunu çözebildim:

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

Dikkat edilecek noktalar:

1) Komutlar siparişte gerçekleştirildi 2) Komutlar kök kullanıcı olarak çıkarıldı

Bu cevabı nezaket .


1

Alternatif olarak:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update

6
Lütfen blog'unuzun cevaplarında reklam vermeyin. Biyo bunun için var.
slm

1

Cevabım, aşağıdaki bash scriptlet'inde @mariotomo'da (kim yükseldi) hakkında ufak bir yükseltme (IMHO, YMMV).

  • ayrıca kullanır gpg
  • daha fazla parametre
  • (ayrıca farklı bir keyserver kullanır, ancak bu durumda çok az fark yarattığından şüpheleniyorum)

Ayrıca eval"kuru çalıştırma" satırını da yorumlayabilirsiniz : scriptlet daha sonra aslında yapmadan ne yapmayı planladığını size gösterir. Bunu NO_PUBKEYher kullandığınızda değerinin değiştirildiğinden emin olun (istediğiniz gibi değiştirebilirsiniz KEYSERVER):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done

0

Run killall -q gpg-agentdiğer çözümler işe yaramazsa. İşe yarayabilir.

Ubuntu 18.04'teki PPA deposu için de benzer bir hatayla karşılaşıyordum ve geçen ay internette çeşitli çözümler denedikten sonra, sadece gpg aracısına tökezleyip öldürdüm. Daha sonra, PPA birimleri bunu yaparken güncelleme yapmaya başladı sudo apt-get update. Güvenliği tehlikeye atabileceğini biliyorum, ancak bazen bir PPA'dan bir pakete ihtiyacınız olabilir ve GPG size izin vermiyor. Daha sonra gpg aracısını tekrar başlatırsınız ve işler normale döner.


-1

Bu benim için çalıştı:

Hızlı çözüm:

sudo rm -f /etc/apt/trusted.gpg

( Kaynak )

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.