如何修复丢失的GPG密钥?

我刚刚安装了Ubuntu 12.04并添加了一些repo,当我做apt-get update ,我得到了丢失的gpg密钥。

以下命令似乎对我不起作用:

 apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done 

如何解决这个问题?

我喜欢这个解决方案,从Ubuntu密钥服务器重新下载丢失的密钥。

对于Ubuntu

  • UBUNTU:修复UBUNTU中的GPG密钥

在我的情况下

  Reading package lists... Done W: GPG error: http://ppa.launchpad.net precise Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 2EA8F35793D8809A 

这是添加错误消息中提到的缺失键的命令。

 sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A 

所以我拿了丢失的密钥2EA8F35793D8809A并要求keyserver.ubuntu.com将它添加到我在apt中的密钥列表中。

对于linux薄荷
您的密钥服务器与keyserver.linuxmint.com略有不同

 sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key" 

尝试替代密钥服务器
keyserver.ubuntu.com

有一个名为Y PPA manager的软件它可以帮助修复GPG密钥错误。
Y PPA经理

安装 –

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager 

安装后启动它,然后继续advance并选择“导入所有丢失的GPG密钥”

使用apt-key adv --recv-keys的自动下载可能无法在防火墙后面运行。

在这种情况下,在Web浏览器中打开Ubuntu密钥服务器的网页,然后搜索0x的字符串0x

打开pub部分中的链接。 保存关键内容(从-----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK----- )作为文件。

然后运行:

 sudo apt-key add  

资料来源: http : //opensourceforgeeks.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html

首先在终端中输入以下命令

  sudo rm /var/lib/apt/lists/* -vf 

然后在终端中输入以下命令来更新系统

  sudo apt-get update && sudo apt-get upgrade 

在此之后应该没有错误,一切都应该正常。

对于Ubuntu 12.04 Precise:永久解决方案

添加新存储库并更新存储库列表后出现此错误消息。 这是由于服务器的地址不再有效。 所以只需将地址更改为好地址即可。

  1. 使用文本编辑器打开~/.gnupg/gpg.conf文件。

    在终端: gedit ~/.gnupg/gpg.conf

  2. 然后,在此文件中,找到以下粗线(第116行)(默认情况下应如下所示):

    […]
    keyserver hkp://keys.gnupg.net
    #keyserver mailto:pgp-public-keys@keys.nl.pgp.net
    #keyserver ldap://keyserver.pgp.com

  3. 然后添加以下粗线,最后给出以下结果:

    (将#添加到第二行,如下所示,注释掉旧地址)

    […]
    keyserver http://keyserver.ubuntu.com
    #keyserver hkp://keys.gnupg.net
    #keyserver mailto:pgp-public-keys@keys.nl.pgp.net
    #keyserver ldap://keyserver.pgp.com

  4. 保存文件并尝试再次更新:

    在终端: sudo apt-get update

使用Y PPA MAnager最简单的方法

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager 

从Dash打开Y PPA Manager

在此处输入图像描述

输入您的管理员密码

在此处输入图像描述

双击高级选项

在此处输入图像描述

单击“尝试导入所有丢失的GPG密钥”

在此处输入图像描述

单击“确定”进行修复

根据尼拉答案:

 sudo apt-get update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' | while read key; do echo 'Processing key:' "$key" sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$key" done 

该脚本将所有错误转储到临时文件中,然后循环遍历它们,导入丢失的密钥。

首先在终端中输入以下命令

 sudo rm /var/lib/apt/lists/* -vf 

然后在终端中输入以下命令来更新系统

 sudo apt-get update && sudo apt-get upgrade 

在此之后应该没有错误,一切都应该正常。

我遇到了同样的问题,通过添加一个ppa( ppa:nathandyer/vocal-stable ),它打破了我的存储库。 我从Web Upd8的作者那里得到了指导,关于如何解决这个问题,以下是他的步骤。

备份你的.gpg密钥,以防出现问题。

让我们建立一个文件夹,我们将把备份放在其中。

  • mkdir ~/gpg-backups

    这将备份/etc/apt/trusted.gpg.d/夹中的所有文件。

  • sudo cp /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/

现在,我们将删除所有.gpg键。

  • sudo rm /etc/apt/trusted.gpg.d/

  • sudo cp /etc/apt/trustdb.gpg ~/gpg-backups/

  • sudo rm /etc/apt/trustdb.gpg

在“软件和更新”的“身份validation”选项卡上,单击“恢复默认值”

安装y-ppa管理器以导入所有丢失的GPG密钥

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager 

参考

  • 尝试Vocal,一个专为基础操作系统设计的播客管理器~Web Upd8:Ubuntu / Linux博客#comment-1981323351

我想在bash脚本中自动修复这样的错误。 对于任何有兴趣的人,这应该做的伎俩:

 sudo apt-get update 2> /tmp/keymissing if [ -f /tmp/keymissing ] then for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //") do echo -e "\nProcessing key: $key" sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key sudo apt-get update done rm /tmp/keymissing fi 

对我有用的是首先删除密钥然后重新安装。 为此,我做了以下事情:

 root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5 

删除

 root@ > ~: sudo apt-key del 630239CC130E1A7FD81A27B140976EAF437D05B5 

然后,通过键入重新安装

 root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5 

如果您有这样的事情:

 # aptitude update ... Ign http://archive.canonical.com wily/partner Translation-en_US Fetched 422 kB in 3s (130 kB/s) W: GPG error: http://ubuntu.volia.net wily InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32 

首先尝试:

 # sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 

last命令的输出可以是:

 gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_experiments.gpg': resource limit gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_gthumb.gpg': resource limit 

所以你需要去/etc/apt/trusted.gpg.d/并删除未使用的密钥,然后重复apt-key advaptitude update

运行wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

当我使用德语设置安装12.04时,我遇到此问题。 然后,存储库列表默认使用德语镜像存储库。 如果是这种情况,您可以编辑存储库列表并将所有德语镜像存储库更改为Ubuntu标准存储库。

您可以使用以下方法:

 sudo nano /etc/apt/sources.list 

使用Altr在Nano中搜索和替换

搜索(替换): /de.

替换为: /

全部替换(按A

保存文件Ctrlx

然后在终端中输入以下命令来更新系统:

 sudo apt-get update && sudo apt-get upgrade 

在此之后应该没有错误,一切都应该正常。

你可以使用repogen。 您将获得所有指令,包括GPG密钥validation。 以下是链接。

https://repogen.simplylinux.ch/