执行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


(...)

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


评论

...而您遗忘的那条字符串很重要。它可以让我们确定您缺少哪些密钥(假设安装密钥环软件包(最好是从受信任的媒体安装),而ruda建议对此无济于事)。

您不应该这样让猫在键盘上行走。 :-)⁠

#1 楼

其他答案是否有效,取决于密钥“ 8B48AD6246925553”在它们指示的包装中是否存在。要找到它,它在密钥服务器中(很可能任何密钥服务器都可以):

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


评论


这也对我有用,在这里没有其他答案。

–西基兰
16年4月28日在4:54

有什么方法可以确定接收到的密钥是否合法,这样我就可以进行危险的操作,例如向任意密钥添加全局apt-trust?收到密钥后,是否有任何方法可以检查密钥的可信度?进行密钥验证需要执行哪些步骤?例如,您仅有的是ftp-master.debian.org/keys/ziyi_key_2002.asc,那么如何在不中断信任链的情况下获取最新密钥?

– Tino
16年5月13日在9:22

对于Debian 7(Wheezy)有用的好答案。除键为1397BC53640DB551外,我得到的错误类似于OP的错误。我尝试使用我认为是Debian密钥服务器(keyring.debian.org)的服务器时没有任何乐趣。 keyserver.ubuntu.com密钥服务器奏效了!

–挖土机
16年8月3日在18:12

如果我只能添加APT :: Get :: AllowUnauthenticated“ true”,那么为什么还要添加密钥呢?到/etc/apt/apt.conf.d/?对于那些不想放弃关键检查的人,请参阅其他答案。

–x-yuri
19年7月8日在18:24

仅供参考,您在此答案中提到的密钥已于昨天过期。

–弗兰克·布莱斯(Frank Bryce)
20-4-27的2:17

#2 楼

我建议您遵循@mariotomo的回答,而不要遵循以下步骤:


由于以下密钥ID没有可用的公共密钥,因此可以解决此问题:

sudo aptitude install debian-archive-keyring


参考文献


Debian公钥错误2


评论


最后8个十六进制数字与此共享,因此它可能抱怨微风。 OP的不幸之处在于:pub 4096R / 46925553 2012-04-27 [过期:2020-04-25] uid Debian存档自动签名密钥(7.0 / wheezy)

–马丁·多雷(Martin Dorey)
2013年6月2日,0:56



真的需要debian-keyring吗?仅使用debian-archive-keyring就为我解决了问题。

–x-yuri
2015年10月5日15:24

毫不奇怪,不同的十六进制数可能需要不同的解决方案。我在Google搜索中的数字周围加上了引号,以强制逐字搜索该数字,然后我登陆了此页面,这解决了我的问题:reddit.com/r/linux4noobs/comments/4grdo7/…(@mariotomo的答案可能也起作用了-我没有尝试)

– Michael Scheper
16年4月30日在13:29

不需要debian-keyring。

–x-yuri
19-10-4在14:47

#3 楼

我建议:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update


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

评论


这就是我所需要的-对我来说太好了!

–哈珀维尔
15年11月20日在19:53

像魅力一样工作!

–Wilbeibi
17年7月20日在23:37

这对我来说是更好的解决方案,因为它更适合Docker容器。但是请注意(至少在Docker中),您只需要首先安装此软件包,然后进行第二次apt-get更新,然后安装您真正想要的软件包。

–马耳他
17-10-6在3:40

Debian 10:警告:“ apt-key update”已被弃用,不应再使用!注意:在您的发行版中,此命令是无操作的,因此可以安全地删除

– aexl
19-09-30在12:39

实际上,即使您已在最新版本中安装了debian-keyring,也可能需要安装debian-archive-keyring

–Ángel
19年10月4日在22:53

#4 楼

错误“没有可用于以下密钥ID的公共密钥”表示严重的安全问题:无法检查操作系统程序包的公共密钥,以确保完整性,因为缺少其公共密钥。

如果消息为:

There is no public key available for the following key IDs: 1397BC53640DB551


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

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done


在此示例中,这是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 -


评论


固定给我:)谢谢!但是只是好奇,出什么事了?第一个命令做什么,第二个命令做什么?这应该解决所有问题吗?我的问题也与Google Chrome有关。

–罗汉
16年5月2日在2:33



并且第一个命令是否会对gpg进行任何更改?它说它创建了一些conf文件gpg.conf,但我不知道是否要这样。

–罗汉
16年5月2日,下午2:39

第一个确实在您的数据包列表中搜索密钥以查看有问题的数据包。第二个下载密钥并将其添加到您的系统中。在这种情况下,第一个命令没有用,但作为一般方法很好。

–马可·苏拉(Marco Sulla)
16年5月10日在22:04



#5 楼

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

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

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

要注意的地方:

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

请提供此答案。

#6 楼

或者:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update


评论


请不要在答案中宣传您的博客。那就是你的简历。

–slm♦
2014年12月6日在2:58

#7 楼

我的答案是在以下bash脚本中对@mariotomo(我赞成)进行了轻微升级(IMHO,YMMV)。


还使用gpg

参数化更多
(也使用其他密钥服务器,尽管在这种情况下我怀疑这没什么区别)

您也可以注释掉eval行以进行“空运行”:然后脚本将仅显示您打算做什么,而没有实际做。只要确保每次使用时都更改NO_PUBKEY的值即可(也可以根据需要更改KEYSERVER):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done


#8 楼

如果其他解决方案不起作用,请运行killall -q gpg-agent

我在Ubuntu 18.04上的PPA存储库遇到了类似的错误,在上个月尝试了Internet上的各种解决方案后,我偶然发现gpg-agent并杀死了它。然后,PPA存储库开始更新sudo apt-get update。我知道它可能会损害安全性,但有时您需要PPA的软件包,而GPG却不允许您这样做。稍后,您再次启动gpg-agent,一切恢复正常。

#9 楼

我只是在尝试用可怕的懒惰引起的安装蜘蛛网更新桌面框时遇到了这个问题,并通过使用我的网络浏览器从https://保存了debian-archive-keyring软件包的最新可用版本进行了修复。 /packages.debian.org/sid/debian-archive-keyring到/ tmp,然后使用dpkg -i /tmp/debian-archive-keyring*.deb手动安装。

此过程非常简单,不会受到MITM攻击的篡改,并且如果目标计算机的蜘蛛网严重到无法要求下载和安装步骤,则可以在单独的计算机上完成。

#10 楼

这对我有用:

快速补救措施: