sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10コマンドがエラーを返す


30

Ubuntu 12にMongodbをインストールしようとしていますが、このコマンドを実行すると次
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
のエラーが返されます。


keyserver.ubuntu.com ホストが見つかりませんgpgkeys:HTTPフェッチエラー7:接続できませんでした:そのようなファイルまたはディレクトリがありません
gpg:有効なopenPGPデータが見つかりません
gpg:プロセスの総数:0

Iptablesでファイアウォールをオフにしましたが、機能しません。アイデアはありますか?


システムはkeyserver.ubuntu.comをIPアドレスとして解決できますか?すなわち、出力はdig keyserver.ubuntu.com何ですか?
-Xyon

回答:


35

これは実際にはキーサーバーの検索に関する問題ではない可能性があり、エラーが示唆するものです。apt-keyコマンドはgpgを呼び出し、これがキーサーバーへのアクセスを試行します。どうやらgpgにはバグがあり、キーサーバーが要求しているキーを持っていない場合、gpgはそれを「ホストが見つかりません」と誤解します。

応答しないキーサーバーでも同じことが行われる可能性があります。キーサーバーがブロックされている環境(企業のファイアウォールルール)を見てきたので、アクセスできない上流のファイアウォールがある場合、それが根本的な原因になる可能性がありますに。

参考のために、キーはそこにあり、キーサーバーは現在私に応答しています:

$ 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 <richard@10gen.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

ポートが問題である可能性があります(企業ファイアウォールの問題に最後に出会ったのはそれが最後だった)ので、代わりに標準のHTTPポート(80)でこれを試してみてください。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

4
「代わりに標準のHTTPポート(80)でこれを行う」のは、とても面倒です!tks
Bill.Zhuang

1
警告:SSLを使用しないと、指紋の最後の8文字が同じキー攻撃キーなど)を提供するMitM攻撃に見舞われる可能性があります。そのようなキーは公開されてさえいないかもしれないので、あなたはあなたがpwnedされたことを決して知らないでしょう。公開共有キーからのこのような攻撃を防ぐために、Debianのキーサーバーは「Debianキーリングのキーのみがこのサーバーによって返される」というポリシーを持っています
Adam Katz

21

私のマシンが企業のプロキシの背後にあるのと同じ問題に直面しました。gpg --keyserver-option http-proxyトリックを追加しました。次のようになります:

sudo apt-key adv --keyserver-options http-proxy=<myProxy> --keyserver keyserver.ubuntu.com --recv 7F0CEB10

1
ありがとう!私は...トップで読むのをやめなかったことが良い
Moraruのリリアン

20

プロキシ、たとえば会社のプロキシを使用している場合、おそらく唯一の方法はこれを手動で入力することです。これは非常に簡単です。実行:

sudo apt-get update

pub_keyのIDを取得します。次に、http://keyserver.ubuntu.com/にアクセスして、16進数としてキーを7936A783B検索し0x7936A783Bます。たとえば、キーがの場合、を検索します。pupリンクをクリックしてキーの内容をコピーし、txtファイルに保存します。ターミナルに移動し、ファイルに移動して実行します:

sudo apt-key add key.txt

それが機能する場合、簡単なOKフィードバックが得られます。すべてのキーが追加されたら、次を実行できます。

sudo apt-get update

そして、あなたはそれを持っています!


3
これはきれいです。それはあなたがそのまま取得URLを使用することも可能ですapt-key以下のように:apt-key adv --fetch-keys http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xD6ACA1C817B18ABC
sxc731

2
@ sxc731 - apt-keymanページは言う:「それは気にせず使用している場合、完全にはapt -セキュア(8)インフラを弱体化するのは簡単ですので、何もチェックがないことを注意、実行さ。」この手段は、あなたが本当になしていることを行うにはしたくありませんSSL。それを変更すると--fetch-keys https://…、合理的に安全になります。
アダムカッツ

@AdamKatz非常に良い点、ありがとう。残念ながら、あなたの提案を適用するためにコメントを編集することはできませんが、とにかく投票しました...
sxc731

この--fetch-keysオプションはエラーで失敗しました:https://keyserver.ubuntu.com/pks/lookup?op=get gpgkeys: protocol https 'はサポートされていませんgpg:キーサーバースキームのハンドラーがありませんhttps' gpg: WARNING: unable to fetch URI https://keyserver.ubuntu.com/pks/lookup?op=get: keyserver error
miguelmorin

ありがとう、まさに私が探していたもの。
ミゲルオルティス

1

このリンクで言及されている2番目のアプローチは、私にとってはうまくいきました。キーを手動でダウンロードして追加します。リンクは、キーが欠落しているために発生するエラーを修正するための手順をステップごとに提供します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.