如何修复 GPG 错误“NO_PUBKEY”?

如何修复 GPG 错误“NO_PUBKEY”?

我使用软件源程序添加了一些额外的存储库。但是当我重新加载软件包数据库时,出现了如下错误:

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

根据 Ubuntu 官方文档,我知道我可以在终端中修复它apt-key。但我更希望以图形方式进行修复。有没有不使用终端就可以做到这一点的方法?

答案1

此答案适用于 Ubuntu 20.04 及之前的版本。对于 Ubuntu 20.10 及更高版本,请参阅StackOverflow 上的这个答案

简短版本如下:

sudo mkdir -m 0755 -p /etc/apt/keyrings/ 

wget -O- https://example.com/EXAMPLE.gpg |
    gpg --dearmor |
    sudo tee /etc/apt/keyrings/EXAMPLE.gpg > /dev/null
    sudo chmod 644 /etc/apt/keyrings/EXAMPLE.gpg

echo "deb [signed-by=/etc/apt/keyrings/EXAMPLE.gpg] https://example.com/apt stable main" |
    sudo tee /etc/apt/sources.list.d/EXAMPLE.list
    sudo chmod 644 /etc/apt/sources.list.d/EXAMPLE.list

# Optional (you can find the email address / ID using 'apt-key list')
sudo apt-key del [email protected]

原始答案:

在终端中执行以下命令

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

<PUBKEY>您丢失的存储库公钥在哪里,例如8BAF9A6F

然后更新

sudo apt-get update

替代方法:

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

请注意,当您使用 导入密钥时,apt-key您正在告诉系统您信任您导入的密钥,以便对系统将要使用的软件进行签名。除非您确定该密钥确实是软件包分发者的密钥,否则请不要这样做。

答案2

目前为止,处理此问题最简单的方法是使用 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然后按回车键)。

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

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

    大功告成!正如启动操作时出现的警告对话框所示,这可能需要相当长的时间(对我来说大约 2 分钟),具体取决于您有多少 PPA 以及您的连接速度。

答案3

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

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

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

它从 ubuntu 密钥服务器检索密钥。然后是:

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

它将密钥添加到 apt 信任密钥中。

可以找到解决方案这里&这里&这里

答案4

注意:从最近的版本开始,将 PPA 密钥添加到密钥环不再被视为良好做法。不过,我会保留这个答案,但 apt-key 现已弃用,因此建议我们遵循不同的方法目前。

apt 只能处理 /etc/apt/trusted.gpg.d 中的 40 个密钥。41 个密钥会导致您收到 GPG 错误“未找到公钥”,即使您按照所有步骤添加丢失的密钥也是如此。

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

此外,使用

sudo apt-key adv

被认为存在安全风险,不建议就像你一样 ”破坏整个安全概念,因为出于各种原因,这不是接收密钥的安全方式(例如:hkp 是纯文本协议,可以伪造短密钥甚至长密钥,...)“。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 -

相关内容