apt-get 更新上的“没有可用的公钥”

Tha*_*Guy 156 debian

执行时apt-get update,我收到以下错误:

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR
Run Code Online (Sandbox Code Playgroud)

(……)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553
Run Code Online (Sandbox Code Playgroud)

mar*_*omo 206

其他答案是否有效,取决于它们指示的包中是否存在密钥“8B48AD6246925553”。

如果您需要密钥,则必须获取该密钥,以及在哪里可以找到它,它位于密钥服务器中(很可能任何密钥服务器都可以):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
Run Code Online (Sandbox Code Playgroud)

  • 有什么方法可以确定接收到的密钥是否是合法的,以便我可以执行如此危险的操作,例如将全局 apt-trust 添加到某个任意密钥?有没有办法在收到密钥后检查其可信度?执行密钥验证的步骤是什么?例如,你唯一拥有的是 https://ftp-master.debian.org/keys/ziyi_key_2002.asc 那么你如何在不破坏信任链的情况下获得最新的密钥? (8认同)

Tha*_*Guy 79

我建议您遵循@mariotomo 的回答而不是以下步骤!


根据以下密钥 ID 没有可用的公钥,这将修复它:

sudo aptitude install debian-archive-keyring
Run Code Online (Sandbox Code Playgroud)

参考

  • 真的需要`debian-keyring`吗?只用`debian-archive-keyring` 就对我有用了。 (5认同)

小智 42

我建议:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update
Run Code Online (Sandbox Code Playgroud)

这比其他方法要好,因为它不安装debian-keyring,这很大并且 99% 的时间都是不必要的。

  • Debian 10:*警告:'apt-key update' 已被弃用,不应再使用!注意:在您的发行版中,此命令是无操作的,因此可以安全地删除* (2认同)
  • 事实上,即使您在最新版本上安装了 debian-keyring,您也可能需要安装 debian-archive-keyring (2认同)

小智 17

错误没有可用于以下密钥 ID 的公钥表明存在严重的安全问题:无法使用其公钥检查操作系统包的完整性,因为其公钥丢失。

如果消息是:

There is no public key available for the following key IDs: 1397BC53640DB551
Run Code Online (Sandbox Code Playgroud)

您可以使用此命令找出使用密钥的存储库:

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done
Run Code Online (Sandbox Code Playgroud)

在此示例中,这是 Google 的 Chrome 存储库:

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

如果您信任 Google 及其政府等,您应该找出密钥的位置并添加:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
Run Code Online (Sandbox Code Playgroud)


小智 5

我在 Linux Mint(内核版本 3.13.0-24)中遇到了同样的问题,我能够使用以下命令解决它:

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

需要注意的点:

1) 命令按顺序执行 2) 命令以root用户身份执行

礼貌这个答案。