sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 команда возвращает ошибку

30

Я пытаюсь установить Mongodb на Ubuntu 12, но когда я запускаю эту команду:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
Это вернуло ошибку ниже:

хост-сервер
keyserver.ubuntu.com не найден gpgkeys: ошибка выборки HTTP 7: не удалось подключиться: нет такого файла или каталога
gpg: не найдены действительные данные openPGP
gpg: общее количество процессов: 0

Я отключил брандмауэр на Iptables, но он не работает. Есть ли идея?

nyamka
источник
Может ли ваша система разрешить keyserver.ubuntu.com в качестве IP-адреса? Т.е. каков выход dig keyserver.ubuntu.com?
Ксион

Ответы:

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 вы можете быть поражены MitM-атакой, которая обслуживает вас ключом, отпечаток которого имеет те же последние восемь символов ( пример атакующего ключа ). Такой ключ может даже не передаваться публично, поэтому вы никогда не узнаете, что его взломали. Чтобы предотвратить такую ​​атаку с открытых ключей, сервер ключей Debian имеет политику, утверждающую, что «этот сервер будет возвращать только ключи в цепочках ключей Debian…»
Адам Кац
21

Я столкнулся с той же проблемой, что и моя машина за корпоративным прокси. Добавив gpg --keyserver-option http-proxyсделанный трюк. Выглядит как:

sudo apt-key adv --keyserver-options http-proxy=<myProxy> --keyserver keyserver.ubuntu.com --recv 7F0CEB10
fgungnir
источник
1
Благодарность! Хорошо, что я не перестал читать наверху ...
Морару Лилиан
20

Если вы используете прокси, например, прокси компании, то, вероятно, единственный способ - ввести его вручную, что довольно просто. Бег:

sudo apt-get update

и получите идентификатор pub_key. Затем перейдите по адресу http://keyserver.ubuntu.com/ и найдите ключ в шестнадцатеричном формате, например, если ключ есть 7936A783B, затем выполните поиск 0x7936A783B. Нажмите на ссылку щенка и скопируйте содержимое ключа и сохраните его в текстовый файл. Перейдите в терминал, перейдите к файлу и запустите:

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-keyстранице руководства написано: «Обратите внимание, что проверки не выполняются, поэтому можно легко подорвать инфраструктуру apt-secure (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

Второй подход, упомянутый в этой ссылке, работал для меня. Вручную загрузите ключ и добавьте его. Ссылка содержит пошаговую процедуру для исправления ошибки, возникающей из-за отсутствия ключа.

Аникет Тхакур
источник