如何修复丢失的 GPG 密钥?

Fih*_*Fih 162 updates repository gnupg keys

我刚刚安装了 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
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

nel*_*aro 227

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

对于 Ubuntu

就我而言

 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
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A
Run Code Online (Sandbox Code Playgroud)

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

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

sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"
Run Code Online (Sandbox Code Playgroud)

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

  • 这样做有任何安全隐患吗?我基本上只是通过 http 下载公钥,对吗? (8认同)
  • 我创建了一个函数添加所需的键 `adkeys (){ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$1";}` 并删除我用来做的重复或有问题的键这个: `grep -ril "pattern" /etc/apt | 须藤 xargs rm -f` (2认同)

Ash*_*shu 23

有一个名为 asY 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    
Run Code Online (Sandbox Code Playgroud)

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

  • 您必须在此命令中添加 sudo!`sudo apt-get ...` (2认同)

Mel*_*ius 16

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

在这种情况下,请在 Web 浏览器中打开Ubuntu Key Server的网页并搜索字符串0x<hexadecimal code of your missing key>.

打开pub部分中的链接。将密钥内容(从-----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK-----)另存为文件。

然后运行:

sudo apt-key add <file-with-saved-key>
Run Code Online (Sandbox Code Playgroud)

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


Bha*_*rat 14

首先在终端输入以下命令

 sudo rm /var/lib/apt/lists/* -vf
Run Code Online (Sandbox Code Playgroud)

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

 sudo apt-get update && sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

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

  • 同时使用 `sudo` 和 `rm` 是危险的。同时使用 `rm` 和 `*` 是危险的。在同一命令中使用这三个,鲨鱼会咬你或你的文件。 (10认同)

bli*_*r47 10

对于 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 hkp://keys.gnupg.net # keyserver mailto:pgp-public-keys@keys.nl.pgp.net # keyserver ldap://keyserver.pgp.com
    keyserver http://keyserver.ubuntu.com
    #

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

    在终端: sudo apt-get update


小智 9

基于 nelaar 的回答:

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
Run Code Online (Sandbox Code Playgroud)

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


Qas*_*sim 6

最简单的方法是使用 Y PPA Manager

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager 
Run Code Online (Sandbox Code Playgroud)

从 Dash打开Y PPA Manager

在此处输入图片说明

输入您的管理员密码

在此处输入图片说明

双击高级选项

在此处输入图片说明

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

在此处输入图片说明

单击确定修复它