如何修复GPG错误“NO_PUBKEY”?

我在Software Sources程序中添加了一些额外的存储库。 但是当我重新加载包数据库时,我收到如下错误:

W:GPG错误: http ://ppa.launchpad.net trusty InRelease:由于公钥不可用,无法validation以下签名:NO_PUBKEY 8BAF9A6F

根据官方的Ubuntu文档,我知道我可以在终端中使用apt-key来修复它。 但我本来希望以图形方式做到这一点。 有没有办法在不使用终端的情况下执行此操作?

到目前为止,处理此问题的最简单方法是使用Y-PPA-Manager(现在将launchpad-getkeys脚本与图形界面集成在一起)。

  1. 要安装它,首先要为此程序添加webupd8存储库:

     sudo add-apt-repository ppa:webupd8team/y-ppa-manager 
  2. 更新您的软件列表并安装Y-PPA-Manager:

     sudo apt-get update sudo apt-get install y-ppa-manager 
  3. 运行y-ppa-manager(即键入y-ppa-manager然后按Enter键)。

  4. 当出现主y-ppa-manager窗口时,单击“高级”。

  5. 从高级任务列表中,选择“尝试导入所有丢失的GPG密钥”,然后单击“确定”。

    你完成了! 正如警告对话框所说,当您开始操作时,可能需要相当长的时间(对我来说大约需要2分钟),具体取决于您拥有的PPA数量和连接速度。

在终端中执行以下命令

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  

其中是您缺少的存储库公钥,例如8BAF9A6F

然后更新

 sudo apt-get update 

替代方法:

 sudo gpg --keyserver pgpkeys.mit.edu --recv-key  sudo gpg -a --export  | sudo apt-key add - sudo apt-get update 

请注意,当您使用apt-key导入这样apt-key您告诉系统您信任要导入的密钥以对系统将使用的软件进行签名。 除非您确定钥匙确实是包装经销商的钥匙,否则不要这样做。

当您没有适当的存储库公钥时,就会发生这种情况。

要解决此问题,请使用以下命令:

 gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21 

从ubuntu密钥服务器检索密钥。 然后这个:

 gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add - 

这会将密钥添加到apt可信密钥。

解决方案可以在这里和这里和这里找到 。

您需要获取并导入密钥。

要从PPA获取密钥,请访问PPA的Launchpad页面。 在Launchpad的每个PPA页面上,您可以在点击“有关此PPA的技术详细信息”(1)后找到此链接(2):

按照它并单击密钥ID链接(3):

保存页面,这是您的密钥文件。


现在是时候导入它了:

  • Applications > Software Center
  • Edit > Software sources...
  • 输入你的密码,
  • 转到Authentication选项卡,最后单击Import Key File...
  • 选择保存的密钥文件,然后单击“ OK

而已。

apt只能处理/etc/apt/trusted.gpg.d中的40个键。 41个密钥,即使您完成添加缺失密钥的所有步骤,您也会收到“未找到公钥”的GPG错误。

检查此文件中是否有任何未使用的密钥来自您不再使用的ppa。 如果所有都在使用中,请考虑在/etc/apt/trusted.gpg.d中删除一些ppa以及相应的密钥文件。

此外,使用

 sudo apt-key adv 

被认为是一种安全风险,因为你“ 破坏整个安全概念,因为这不是一种以各种原因接收密钥的安全方式”(例如:hkp是一种明文协议,短的甚至长的keyid可以伪造,… ) “。 http://ubuntuforums.org/showthread.php?t=2195579

我相信添加缺失密钥的正确方法(例如1ABC2D34EF56GH78)是

 gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78 gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add - 

WebUpd8 PPA中包含一个小脚本,我将链接为单个.deb下载,因此您无需添加整个PPA – 它会自动导入所有丢失的GPG密钥。

下载并安装Launchpad-getkeys (忽略其版本中的~ natty ,它适用于从Karmic到Oneiric的所有Ubuntu版本)。 安装后,打开终端并键入:

 sudo launchpad-getkeys 

如果你是代理的背后,事情有点复杂,所以请看更多信息

我在安装Heroku时遇到了同样的问题。 下面的链接解决了我的问题 –

http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html

修复NO_PUBKEY问题后,仍然存在以下问题

 W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering  

为了解决这个问题,我在终端中执行了以下命令:

 sudo -i apt-get clean cd /var/lib/apt mv lists lists.old mkdir -p lists/partial apt-get clean apt-get update 

来源 – 解决它的链接

确保安装了apt-transport-https

 dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; sudo apt-get install apt-transport-https -y" 

添加存储库:

 curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list 

安装Skype for Linux:

 sudo apt-get update sudo apt-get install skypeforlinux -y 

资料来源: https : //community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756

更一般地说,以下方法应适用于每个存储库。 首先,在搜索引擎的最终帮助下,搜索程序提供商网站上的文本,如下所示:

 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.1 (GNU/Linux) [...] -----END PGP PUBLIC KEY BLOCK----- 

例如,这样的文本显示在http://deb.opera.com上 。 复制该段落,将其粘贴到您在桌面上创建的空文件中。 这导致密钥文件。

然后继续输入密钥:

  • 应用程序>软件中心
  • 编辑>软件来源…,输入密码
  • validation选项卡,单击’导入密钥文件…’
  • 选择保存的密钥文件,然后单击“确定”。

您现在可以删除以前创建的密钥文件。

好! 我最终找到了方法!

我已经测试了所有方法来修复GPG错误NO_PUBKEY并且没有任何对我有用的东西。

我删除了文件夹/etc/apt/trusted.gpg.d的全部内容

 cd /etc/apt/trusted.gpg.d sudo rm -R * sudo apt-get update 

我使用Y-PPA-Manager方法,因为我懒得手动创建所有pubkey(太多): http : //www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

再次运行sudo apt-get update,最后一切都很棒! 坦克!

基础资料来源: https : //bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540上的第17期

我在DynDNS的Updater客户端遇到了同样的问题。

原来它只是过期的密钥。

重新安装软件(从网站下载新的.deb ,然后使用软件中心重新安装)修复了问题。

错误消息供参考:

 W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......