Der Befehl sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 gibt einen Fehler zurück

30

Ich versuche Mongodb unter Ubuntu 12 zu installieren, aber wenn ich diesen Befehl ausführe, wird
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
der folgende Fehler zurückgegeben:

keyserver.ubuntu.com Host nicht gefunden
gpgkeys: HTTP holen Fehler 7: konnte keine Verbindung herstellen: keine solche Datei oder das Verzeichnis
gpg: keine gültigen openPGP Daten gefunden
gpg: Anzahl Prozesse Summe: 0

Ich habe die Firewall für Iptables deaktiviert, aber sie funktioniert nicht. Gibt es eine Idee?

Nyamka
quelle
Kann Ihr System keyserver.ubuntu.com als IP-Adresse auflösen? Dh, was ist die Ausgabe von dig keyserver.ubuntu.com?
Xyon

Antworten:

35

Dies ist möglicherweise kein Problem beim Nachschlagen des Keyservers, was der Fehler nahe legt. Der Befehl apt-key ruft gpg auf, das wiederum versucht, auf den Keyserver zuzugreifen. Anscheinend gibt es einen Fehler in gpg. Wenn der Keyserver den von Ihnen angeforderten Schlüssel nicht hat, interpretiert gpg diesen Fehler als "Host nicht gefunden".

Es kann durchaus sein, dass ein nicht reagierender Keyserver dasselbe tut, und ich habe Umgebungen gesehen, in denen die Keyserver blockiert sind (Firewall-Regeln des Unternehmens), sodass dies Ihre Hauptursache sein könnte, wenn es eine Upstream-Firewall gibt, auf die Sie keinen Zugriff haben zu.

Nur als Referenz, der Schlüssel ist da und der Keyserver antwortet gerade für mich:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.rh1myoBdSE --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 7F0CEB10
gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com
gpg: key 7F0CEB10: "Richard Kreuter <[email protected]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

Es kann sein, dass der Port das Problem ist (es war das letzte Mal, als ich auf ein Firewall-Problem in einem Unternehmen stieß). Versuchen Sie dies stattdessen auf dem Standard-HTTP-Port (80).

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Adam C
quelle
4
"dies stattdessen auf dem Standard-HTTP-Port (80) zu tun" ist eine nette Herausforderung! tks
Bill.Zhuang
1
Warnung: Ohne SSL könnten Sie möglicherweise von einer MitM-Attacke getroffen werden , die einen Schlüssel enthält, dessen Fingerabdruck dieselben letzten acht Zeichen aufweist ( Beispiel für einen Angriffsschlüssel ). Ein solcher Schlüssel kann möglicherweise nicht einmal öffentlich geteilt werden, sodass Sie nie wissen würden, dass Sie pwned sind. Um einen solchen Angriff von öffentlich freigegebenen Schlüsseln abzuwehren, hat der Debian-Schlüsselserver eine Richtlinie, die besagt, dass "nur Schlüssel in den Debian-Schlüsselringen ... von diesem Server zurückgegeben werden"
Adam Katz
21

Ich hatte das gleiche Problem, da sich mein Computer hinter einem Unternehmens-Proxy befindet. Hinzufügen der gpg --keyserver-option http-proxymachte den Trick. Sieht aus wie:

sudo apt-key adv --keyserver-options http-proxy=<myProxy> --keyserver keyserver.ubuntu.com --recv 7F0CEB10
fgungnir
quelle
1
Vielen Dank! Gut, dass ich oben nicht aufgehört habe zu lesen ...
Moraru Lilian
20

Wenn Sie einen Proxy verwenden, zum Beispiel einen Firmen-Proxy, besteht die einzige Möglichkeit wahrscheinlich darin, diesen manuell einzugeben, was ziemlich einfach ist. Lauf:

sudo apt-get update

und erhalte die ID des pub_key. Gehen Sie dann zu http://keyserver.ubuntu.com/ und suchen Sie nach dem Schlüssel als Hexadezimalzahl. Wenn dies beispielsweise der Fall ist 7936A783B, suchen Sie nach 0x7936A783B. Klicken Sie auf den Welpen-Link, kopieren Sie den Schlüsselinhalt und speichern Sie ihn in einer TXT-Datei. Gehen Sie zum Terminal und navigieren Sie zu der Datei und führen Sie Folgendes aus:

sudo apt-key add key.txt

Wenn es funktioniert, erhalten Sie ein einfaches OKFeedback. Wenn alle Schlüssel hinzugefügt wurden, können Sie Folgendes ausführen:

sudo apt-get update

und da hast du es!

DKo
quelle
3
Das ist ordentlich; Es ist auch möglich, die URL, die Sie im apt-keyapt-key adv --fetch-keys http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xD6ACA1C817B18ABC
Wortlaut
2
@ sxc731 - Die apt-keyman - Seite sagt: „Beachten Sie, dass es keine Kontrollen durchgeführt, so dass es vollständig die apt-secure (8) Infrastruktur ohne Sorgfalt verwendet wird , ist einfach , wenn zu untergraben.“ Das heißt , Sie wirklich tun wollen , dass nicht ohne SSL. Ändern --fetch-keys https://…Sie dies in und Sie sollten einigermaßen sicher sein.
Adam Katz
@AdamKatz sehr guter Punkt, danke. Leider kann ich meinen Kommentar nicht bearbeiten, um Ihren Vorschlag zu übernehmen, aber trotzdem
positiv
Die --fetch-keysOption schlug für mich mit Fehler fehl: https://keyserver.ubuntu.com/pks/lookup?op=get gpgkeys: protocol https 'nicht unterstütztes gpg: kein Handler für Keyserver-Schemahttps' gpg: WARNING: unable to fetch URI https://keyserver.ubuntu.com/pks/lookup?op=get: keyserver error
MiguelMorin
Danke, genau das, wonach ich gesucht habe.
Miguel Ortiz
1

Der zweite in diesem Link erwähnte Ansatz hat für mich funktioniert. Laden Sie den Schlüssel manuell herunter und fügen Sie ihn hinzu. Der Link bietet eine schrittweise Anleitung, um den Fehler zu beheben, der aufgrund eines fehlenden Schlüssels auftritt.

Aniket Thakur
quelle