gpg: 没有找到有效的 OpenPGP 数据
Posted
技术标签:
【中文标题】gpg: 没有找到有效的 OpenPGP 数据【英文标题】:gpg: no valid OpenPGP data found 【发布时间】:2014-02-15 19:18:05 【问题描述】:我正在尝试在 Ubuntu 13.10 上安装 Jenkins,当我尝试运行以下命令时出现上述错误:
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
【问题讨论】:
你在代理后面吗? 注意,这是-O
选项,但不是-0
一个
【参考方案1】:
如果您使用公司代理并且公司使用自己的证书,则可能会出现此问题。只需在命令中添加“--no-check-certificate”即可。
例如
wget --no-check-certificate -qO - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
它有效。
如果您想查看发生了什么,您可以在添加“--no-check-certificate”选项之前使用详细命令而不是安静命令。
例如
wget -vO - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
如果您在代理后面,这将告诉您使用“--no-check-certificate”。
【讨论】:
我不知道这是做什么的,但它似乎解决了我将 Microsoft 密钥下载到 GPG 中的另一个问题 这应该是答案。这对我适用于 AWS EC2 我做了curl -fsSL --no-check-certificate https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
但它给了我command not found
和gpg: no valid OpenPGP data found.
错误。
@Chan Kim:--no-check-certificate
是wget
的命令行选项,而不是curl
。
我会提醒任何阅读此答案的人,因为考虑到问题与 GPG 有关,这似乎非常危险。不验证证书可确保您不检查实际颁发此密钥的人,绕过一个非常重要的步骤,确保密钥是从受信任的服务器提供的。通过这样做,您不知道服务器是否在欺骗您认为正在与之交谈的服务器,从而损害了 GPG 中使用的密钥的有效性。也许您需要刷新您的密钥? gpg --keyserver hkp://keyserver.ubuntu.com --refresh-keys
【参考方案2】:
设法解决它。 将命令分成两个命令,直接使用下载的文件名 示例 -
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
可以分成
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key
sudo apt-key add jenkins-ci.org.key
【讨论】:
这对我有用,在第一个命令的 -O 之后添加“jenkins-ci.org.key”。 当我尝试执行上述命令时,遇到错误说 'no such file or directory named jenkins-ci.org.key' 。作为一种解决方法,我创建了名为“jenkins-ci.org.key”的文件并执行了上面的命令,它就像魅力一样! .【参考方案3】:我在 Ubuntu Docker 容器中遇到此错误。我相信原因是容器缺少 CA 证书。要修复它,我必须运行:
apt-get update
apt-get install ca-certificates
【讨论】:
不知道为什么这被否决但这是我的问题,谢谢! 谢谢,它解决了我在 ubuntu 16.04 LTS docker 容器上的问题 我在 Raspbian 上使用 systemd-nspawn。机器是Debian。这个解决方案对我也很有用。【参考方案4】:gpg: 没有找到有效的 OpenPGP 数据。
在这种情况下,消息是一种神秘的方式告诉您下载失败。将这两个步骤放在一起很好,但它会破坏错误报告——尤其是当您使用wget -q
(或curl -s
)时,因为它们会抑制下载步骤中的错误消息。
下载失败可能有多种原因。我的情况,到目前为止没有准确列出,当我使用sudo
调用封闭脚本时,代理设置丢失了。
【讨论】:
在我的情况下 (https://dl.winehq.org/wine-builds/winehq.key
) 这是因为证书不正确。奇怪的是,chrome 接受 https
连接,但 wget
(在 Ubuntu 18.04 上)抱怨。我假设 Chrome 和 linux 使用不同的证书链。理解问题的关键是按照您的建议从wget
中删除-q
标志,问题变得清晰明了。我必须添加--no-check-certificate
才能让wget
工作。
curl
也有--show-error
>当与-s、--silent一起使用时,如果失败,它会让curl显示错误信息。【参考方案5】:
当我在代理后面执行此操作时,我也遇到了同样的错误。但是在我从终端导出以下内容并重新尝试相同的命令后,问题得到了解决:
export http_proxy="http://username:password@proxy_ip_addr:port/"
export https_proxy="https://username:password@proxy_ip_addr:port/"
【讨论】:
如何获取proxy_ip_addr和端口?用户名和密码也是我的机器用户名和密码吗?【参考方案6】:我遇到了这个问题“gpg-no-valid-openpgp-data-found”并用以下方法解决它首先我打开浏览器并粘贴https://pkg.jenkins.io/debian/jenkins-ci.org.key 然后我在下载文件夹中下载密钥然后 cd /下载/然后 sudo apt-key 添加 jenkins-ci.org.key 如果出现“OK”那么你添加密钥成功:)
【讨论】:
【参考方案7】:我遇到了类似的问题。
我使用的命令如下:
wget -qO https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
我忘记了标志和 URL 之间的连字符,这就是 wget 抛出错误的原因。
这是最终对我有用的命令:
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
【讨论】:
【参考方案8】:在我的情况下,问题原来是密钥文件位于 301 Moved Permanently 重定向的后面,curl 命令未能遵循该重定向。我改用wget
来修复它:
wget URL
sudo apt-key add FILENAME
...其中 FILENAME 是wget
在下载文件后输出的文件名。
更新:或者,您可以使用 curl -L
使 curl 跟随重定向。
【讨论】:
我在 curl 方面遇到了类似的问题,根据您的更新,我添加了 -L 这对我来说就像一个魅力。非常感谢【参考方案9】:执行如下命令,会在当前工作目录下保存一个jenkins-ci.org.key文件:
curl -O http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key
然后使用以下命令添加密钥文件:
apt-key add jenkins-ci.org.key
如果系统返回OK,则说明密钥文件添加成功。
【讨论】:
【参考方案10】:export https_proxy=http://user:pswd@host:port
^^^^
对 https_proxy 使用 http
而不是 https
【讨论】:
将 https 替换为 http 对我有用。替换之前:“wget -qO- packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -”,替换后:“sudo wget -qO- packages.microsoft.com/keys/microsoft.asc | sudo apt-key 添加-"【参考方案11】:你忘记了 sudo ...尝试使用 sudo,你会没事的
sudo wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
【讨论】:
您不需要超级用户权限来wget
密钥,并且在apt-key add
命令上提问者使用sudo
如果是权限问题,它会这样说,而不是gpg: no valid OpenPGP data found
。【参考方案12】:
安装 gpg 和
1-导入仓库的 GPG 密钥:
wget -qO - https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
2-这是 linux 中的代码库 elasticserach 供下载
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
三链接下载elasticsearch
https://www.elastic.co/downloads/elasticsearch
如果错误“elasticsearch.service 的作业因超时而失败。有关详细信息,请参阅“systemctl status elasticsearch.service”和“journalctl -xe”。”
解决方案:
1-sudo journalctl -f
2-sudo systemctl enable elasticsearch.service
3-sudo systemctl start elasticsearch
【讨论】:
【参考方案13】:我猜问题出在错误的 GPG 密钥上。 Jenkins 最近更改了他们的 GPG 密钥(2020 年 4 月 16 日)。您可能需要按照当前的官方说明导入正确的密钥。
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
【讨论】:
【参考方案14】:尝试分别执行命令。
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc
然后
sudo apt-key add -
【讨论】:
【参考方案15】:wget
可能没有使用最新的根证书。在这种情况下,它不会向标准输出输出任何内容,导致apt-key
抛出描述错误。我可以通过将我的 debian 9.5 映像升级到最新的 9.13 来解决此问题
apt-get update
apt-get upgrade -y
运行前wget
【讨论】:
【参考方案16】:还有另一个非常基本的原因会触发此帖子标题的错误消息:
如果您尝试解密未加密的文件,则会出现此错误消息。
消息是说 gpg 确实尝试读取要解密的文件,但找不到所需的信息,即加密过程写入那里的信息。
因此该消息也可以表示“仔细检查您提供的解密文件是否正确,看起来它不是加密文件”。
像这样:
# Encrypt your file
encrypt my_text_file > my_encrypted_file
# ERROR! You try to decrypt the unencrypted file DON'T DO THIS
decrypt my_text_file > decrypted_file
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
# You unencrypt the correct (encrypted) file and it works
decrypt my_encrypted_file > decrypted_file
【讨论】:
【参考方案17】:我也遇到了同样的错误。我参考了下面提到的链接并运行了这个命令
gpg --import fails with no valid OpenPGP data found
gpg --import KEYS
sudo apt-get update
成功了。
我使用的是 Ubuntu 12.04 版
【讨论】:
这意味着gpg --import KEYS
将绕过(类似工作)apt-key add KEYS
?
不幸的是,我不明白如何应用这个解决方案。文本“gpg --import KEYS”“sudo apt-get update”与命令“wget -q -O -pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -”有什么关系?什么是钥匙?如果您现在不需要使用 wget,您如何获得密钥?如果我尝试“# gpg --import KEYS”,我会收到很多错误,包括“pgp:无法打开 KEYS:没有这样的文件或目录”
也许他的意思是将 KEYS 一词用作您的关键源 URL 的占位符。以上是关于gpg: 没有找到有效的 OpenPGP 数据的主要内容,如果未能解决你的问题,请参考以下文章
gpg: no valid OpenPGP data found.
gpg: no valid OpenPGP data found.
OpenPGP协议的一个JavaScript实现:OpenPGP.js