"Kein öffentlicher Schlüssel verfügbar" bei apt-get update

133

Bei der Ausführung apt-get updateerhalte ich den folgenden Fehler:

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
Dieser Brasilianer
quelle
2
... und die Saite, die du gewählt hast, ist ein wichtiger Teil. Es würde lassen Sie uns identifizieren , welche Tasten Sie fehlt (vorausgesetzt , die Schlüsselbund Installieren von Paketen-vorzugsweise aus vertrauenswürdigen Medien dass Ruda vorgeschlagen hilft nicht)
Derobert
1
Sie sollten Ihre Katze nicht so auf der Tastatur laufen lassen. :-) ⁠
G-Man

Antworten:

173

Die anderen Antworten funktionieren, je nachdem, ob der Schlüssel '8B48AD6246925553' in den angegebenen Paketen vorhanden ist oder nicht.

Wenn Sie einen Schlüssel benötigen, müssen Sie diesen Schlüssel beschaffen, und wo Sie ihn finden, befindet er sich auf einem Schlüsselserver (höchstwahrscheinlich auf jedem Schlüsselserver):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
Mariotomo
quelle
Dies funktionierte auch für mich und keine anderen Antworten hier ..
Sai Kiran
@starbeamrainbowlabs jetzt ist es! =)
Der Brasilianer
@ThatBrazilianGuy: D
starbeamrainbowlabs
4
Gibt es eine Möglichkeit, festzustellen, ob der empfangene Schlüssel Leggit ist, sodass ich so gefährliche Vorgänge wie das Hinzufügen von globalem Apt-Trust zu einem beliebigen Schlüssel ausführen kann? Gibt es eine Möglichkeit, die Glaubwürdigkeit des Schlüssels nach Erhalt zu überprüfen? Welche Schritte sind erforderlich, um die Schlüsselüberprüfung durchzuführen? Zum Beispiel ist das einzige, was Sie haben, ftp-master.debian.org/keys/ziyi_key_2002.asc. Wie gelangen Sie also zum aktuellsten Schlüssel, ohne die Vertrauenskette zu unterbrechen ?
Tino
1
@ThatBrazilianGuy: Die Tatsache, dass es Ihre Frage ist, gibt Ihnen nicht das Recht, eine Antwort zu vandalisieren.
G-Man
76

Ich empfehle, dass Sie @ mariotomos Antwort folgen und nicht die folgenden Schritte ausführen:


Laut Für die folgende Schlüssel-ID ist kein öffentlicher Schlüssel verfügbar. Dies wird das Problem beheben:

sudo aptitude install debian-archive-keyring

Verweise

Dieser Brasilianer
quelle
Die letzten 8 hexadezimalen Ziffern werden mit diesem geteilt, daher klagt es wahrscheinlich über Keuchen. Leider konnte das OP Folgendes verhindern: pub 4096R / 46925553 2012-04-27 [läuft am 2020-04-25 ab] uid Debian Archive Automatic Signing Key (7.0 / wheezy) <[email protected]>
Martin Dorey
5
Wird das debian-keyringwirklich gebraucht? Es hat bei mir einfach geklappt debian-archive-keyring.
X-Yuri
Es überrascht nicht, dass unterschiedliche Hexadezimalzahlen unterschiedliche Lösungen erfordern können. Ich habe die Nummer in meiner Google-Suche in Anführungszeichen gesetzt, um eine wörtliche Suche nach dieser Nummer zu erzwingen, und bin auf dieser Seite gelandet, die mein Problem behoben hat: reddit.com/r/linux4noobs/comments/4grdo7/… (@ mariotomos Antwort Vielleicht hat es auch funktioniert - ich habe es nicht versucht)
Michael Scheper
debian-keyringwird nicht benötigt.
X-Yuri
38

Ich empfehle:

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

Dies ist besser als bei anderen Ansätzen, da es nicht installiert wird debian-keyring, was zu 99% unnötig ist.

Greg Alexander
quelle
1
Das war alles was ich brauchte - hat super für mich funktioniert!
Harperville
Arbeite wie ein Zauber!
Wilbeibi
1
Dies war die bessere Lösung für mich, da sie besser in einen Docker-Container passt. Beachten Sie jedoch, dass Sie (zumindest in Docker) zuerst nur dieses Paket installieren müssen, dann eine zweite apt-get updateund dann die wirklich gewünschten Pakete installieren müssen.
Malvineous
Debian 10: Warnung: 'apt-key update' ist veraltet und sollte nicht mehr verwendet werden! Hinweis: In Ihrer Distribution dieser Befehl ist ein No-op und daher entfernt sicher sein kann
aexl
Tatsächlich müssen Sie möglicherweise debian-archive-keyring installieren, selbst wenn Sie debian-keyring auf der neuesten Version installiert haben
Ángel,
17

Der Fehler Es ist kein öffentlicher Schlüssel für die folgenden Schlüssel-IDs verfügbar. Dies weist auf ein schwerwiegendes Sicherheitsproblem hin : Ein Betriebssystempaket kann nicht auf Integrität mit seinem öffentlichen Schlüssel überprüft werden, da sein öffentlicher Schlüssel fehlt.

Wenn die Nachricht wäre:

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

Mit diesem Befehl können Sie herausfinden, welches Repository den Schlüssel verwendet:

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

Was in diesem Beispiel das Repository von Google für Chrome ist:

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

Wenn Sie Google, seiner Regierung usw. vertrauen, sollten Sie herausfinden, wo sich der Schlüssel befindet, und ihn hinzufügen mit:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
Ivan Ogai
quelle
Für mich behoben :) Danke! Aber nur neugierig, was war los? Was macht der erste Befehl und was macht der zweite? Sollte dies alle Probleme lösen? Mein Problem war auch mit Google Chrome.
Rohan
Und ändert der erste Befehl etwas an gpg? Es heißt, es habe eine conf-Datei gpg.conf erstellt, und ich weiß nicht, ob ich das will.
Rohan
Der erste sucht nach dem Schlüssel in Ihrer Paketliste, um das fehlerhafte Paket zu sehen. Der zweite lädt den Schlüssel herunter und fügt ihn Ihrem System hinzu. Der erste Befehl ist in diesem Fall nicht hilfreich, eignet sich jedoch als allgemeiner Ansatz.
Marco Sulla
3

Ich hatte das gleiche Problem mit Linux Mint (Kernel Version 3.13.0-24) und konnte es mit den folgenden Befehlen lösen:

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

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

Zu beachtende Punkte:

1) Die Befehle wurden in der angegebenen Reihenfolge ausgeführt. 2) Die Befehle wurden als root- Benutzer ausgeführt

Mit freundlicher Genehmigung dieser Antwort.

Ankur Kumar
quelle
1

Als Alternative:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update
abdiansah.wordpress.com
quelle
6
Bitte machen Sie in Ihren Antworten keine Werbung für Ihren Blog. Dafür ist deine Bio da.
slm
1

Meine Antwort ist ein kleines Upgrade (IMHO, YMMV) auf @mariotomo (den ich hochgestuft habe) im folgenden Bash-Scriptlet

  • verwendet auch gpg
  • parametrisiert mehr
  • (Verwendet auch einen anderen Keyserver, obwohl ich in diesem Fall vermute, dass es kaum einen Unterschied macht)

Sie können die evalZeile auch für einen "Probelauf" auskommentieren: Das Scriptlet zeigt Ihnen dann nur, was es zu tun beabsichtigt, ohne es tatsächlich zu tun. Stellen Sie einfach sicher, dass Sie den Wert NO_PUBKEYjedes Mal ändern, wenn Sie dies verwenden (Sie können ihn auch KEYSERVERwie gewünscht ändern ):

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
TomRoche
quelle
0

Führen Sie aus, killall -q gpg-agentwenn die anderen Lösungen nicht funktionieren. Es könnte klappen.

Ich bekam einen ähnlichen Fehler für ein PPA-Repository unter Ubuntu 18.04 und nachdem ich im letzten Monat verschiedene Lösungen im Internet ausprobiert hatte, bin ich nur auf den gpg-Agenten gestoßen und habe ihn getötet. Dann begannen die PPA-Repositorys zu aktualisieren sudo apt-get update. Ich weiß, dass dies die Sicherheit gefährden kann, aber manchmal benötigen Sie ein Paket von einem PPA, und GPG lässt Sie einfach nicht zu. Später startet man den gpg-agent wieder und es geht wieder normal weiter.

MSharq
quelle
-1

Das hat bei mir funktioniert:

Schnelle Abhilfe:

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

( Quelle )

Jakob
quelle