我知道我可以在终端机中使用
apt-key
对其进行修复。但是我本来希望以图形方式完成它。有没有不用终端就可以做到这一点的方法?#1 楼
到目前为止,最简单的方法是使用Y-PPA-Manager(它现在将launchpad-getkeys
脚本与图形界面集成)。要安装它,首先添加webupd8存储库对于该程序:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
更新软件列表并安装Y-PPA-Manager:
sudo apt-get update
sudo apt-get install y-ppa-manager
运行y-ppa-manager(即键入
y-ppa-manager
,然后按Enter键)。当出现y-ppa-manager主窗口时,单击“高级”。
从高级任务列表中,选择“尝试导入所有丢失的GPG密钥”,然后单击“确定”。
您完成了!如警告对话框所述,当您开始操作时,可能要花一些时间(对我来说大约2分钟),具体取决于您拥有的PPA数量和连接速度。
评论
在Web服务器中并不是真的有用,因为这会安装X11。如果您使用的是服务器版本,请不要使用此方法,请查看karthick87的答案!
– goncalotomas
16年2月11日在20:13
这是否可以验证导入的密钥,还是您只是盲目地导入所有内容(并因此信任拥有PPA的每个人)?
–PaŭloEbermann
16 Sep 6'在10:36
您正在导入(并信任)已添加到系统中的每个PPA的密钥。假设您信任那些PPA,并在通过apt添加它们之前将其检出。
– monotasker
2016年9月6日14:25在
到目前为止,这个答案要容易得多,并且实际上比“图形”答案需要的命令更少。
– jpaugh
17年7月27日在19:37
但是这个问题要求一种图形方法。
– monotasker
17年7月28日在22:30
#2 楼
在终端中执行以下命令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
导入这样的密钥时,您将告诉系统您相信要导入的密钥以签名系统将要使用的软件。除非您确定密钥确实是包裹分发服务器的密钥,否则请勿执行此操作。评论
@Naruto这很正常。这意味着该列表在服务器上没有更改。
– Nanofarad
2012年8月10日15:50
您可以简单地将NO_PUBKEY值作为keys参数传递。例如GPG错误[...] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
– S.M. Mousavi
2014年2月19日19:40在
8BAF9A6F <-您从哪里获得该号码?
–奥利维尔·拉隆德(Olivier Lalonde)
2014年9月9日12:49
数字8BAF9 ...是您在原始错误中看到的内容。就像NO_PUBKEY 8BAF ...
– Alex
2014年10月10日19:56
如果有人篡改了我和存储库之间的数据,并替换了他们所签名的内容,那么我只会增加或多或少盲目添加他们使用的密钥。那么,验证密钥是否正确的过程是什么?
–mc0e
2015年5月20日15:37
#3 楼
当您没有合适的存储库公钥时会发生这种情况。要解决此问题,请使用以下命令:
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21
其中从ubuntu密钥服务器检索密钥。然后是这样:
gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -
将密钥添加到适当的受信任密钥中。
解决方案可在此处,此处和此处找到。
评论
如果hkp://keyserver.ubuntu.com无法正常工作,请使用此pgpkeys.mit.edu服务器。
–RajaRaviVarma
2013年10月30日10:06
这个答案解决了我的Kylin储存库问题。搜狗拼音输入法将源代码添加到了我的/etc/apt/sources.list.d/文件夹中,但显然没有导入gpg键。好的答案,简单点,+ 1!
– Sergiy Kolodyazhnyy
16年8月8日在17:09
谢谢!为我工作以解决php信息库问题。
– Akash Agarwal
17年12月17日在17:31
这个答案解决了我对http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease的更新
–mvw
18年2月21日在9:21
很有可能您之前没有为系统生成过密钥。因此,在执行上述步骤之前,请使用-gpg --gen-key(参考-Packaging.ubuntu.com/html/getting-set-up.html)
–偏执狂
18年5月9日在5:05
#4 楼
您需要获取并导入密钥。要从PPA获取密钥,请访问PPA的启动板页面。在“关于此PPA的技术详细信息”(1)之后,在启动板的每个PPA页面上,您都可以找到此链接(2):
,然后单击在密钥ID链接(3)上:
保存页面,这是您的密钥文件。
现在是导入时间:
Applications > Software Center
,Edit > Software sources...
,输入密码,
转到
Authentication
选项卡并单击Import Key File...
,最后选择保存的密钥文件,然后单击
OK
。评论
不要浪费时间,请看下面的答案。
–Felipe
2011年10月17日在9:06
@FelipeMicaroniLalli,问题是如何使用GUI(而不是终端)添加公钥,因此此答案很完美。
–克里斯·伍兹(Chris Woods)
13年7月30日在14:24
现在,使用y-ppa-manager(也是gui应用程序)来执行此操作变得更加容易和快捷。请参阅下面的答案。
– monotasker
2013年12月4日15:53
可以,但是如果存储库不是ubuntu ppa怎么办。例如。英特尔在download.01.org上运行自己的视频硬件驱动程序存储库
–mc0e
15年5月20日在15:39
很棒的循序渐进指南,非常感谢!对于某些无法通过apt-key添加密钥的人真的很有帮助。
–罗伊(Roy Ling)
2015年11月10日,下午1:35
#5 楼
apt只能处理/etc/apt/trusted.gpg.d中的40个密钥。 41个密钥,即使您按照所有步骤添加丢失的密钥,也会出现GPG错误“找不到公共密钥”。检查是否有未使用的密钥。此文件来自您不再使用的ppa。如果所有这些都在使用中,请考虑删除一些ppa以及/etc/apt/trusted.gpg.d中的相应密钥文件。
此外,使用
sudo apt-key adv
被认为是安全风险,因此不建议您这样做,因为“这破坏了整个安全概念,因为出于各种原因,这不是一种安全的方式来获取密钥(例如:hkp是纯文本协议,短而连可以伪造长的keyid,...)“。 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 -
评论
我发现仅从/etc/apt/trusted.gpg.d中删除所有密钥,然后继续进行接受的答案askubuntu.com/a/386003/284664会更容易
–杰诺特
15年2月8日在18:22
@mchid您能引用一个讨论此41个键限制的文档/ URL吗?
–SebMa
19 Mar 27 '19在2:54
@SebMa链接发布在我的答案中,并引用了受此限制影响的Debian中的错误。这是链接中提到此内容的实际帖子的锚点:ubuntuforums.org/showthread.php?t=2195579#post_message_12882784我不确定是否存在实际的文档,但是可能使用了数字40,因为“ 40 ”会以多种不同的语言翻译为“很多”。
– mchid
19 Mar 27 '19在8:22
@SebMa但是,在此答案时以及之后的一段时间内,该限制已经存在或确实存在。我亲身经历了41个键的限制,并通过删除未使用的键来解决此问题,以在已有40个键时添加新键来避免此错误。
– mchid
19 Mar 27 '19在8:23
@SebMa否wiki.debian.org/SecureApt
– mchid
19 Mar 27 '19在15:20
#6 楼
WebUpd8 PPA中打包有一个小脚本,我将其打包为单个.deb下载,因此您不必添加整个PPA,它会自动导入所有丢失的GPG密钥。下载并安装Launchpad-getkeys(忽略其版本中的〜natty,它将与从Karmic到Oneiric的所有Ubuntu版本一起使用)。安装完成后,打开终端并输入:
sudo launchpad-getkeys
如果您在使用代理,则情况会有些复杂,因此请参阅此以获得更多信息
评论
确实是我现在做的方式,因为我在您的网站上看到了此程序。但是,该问题的目的是要知道如何以图形方式进行。
– Agmenor
2011年6月5日在22:34
现在,launchpad-getkeys脚本已集成到程序Y-PPA-manager中。 launchpad.net/~webupd8team/+archive/y-ppa-manager
– monotasker
2013年12月4日15:41
#7 楼
我在安装Heroku时遇到了同样的问题。下面的链接解决了我的问题-http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html
修复后
NO_PUBKEY
问题,下面的问题仍然存在W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <release@heroku.com>
要解决此问题,我在终端中执行了以下命令:
sudo -i
apt-get clean
cd /var/lib/apt
mv lists lists.old
mkdir -p lists/partial
apt-get clean
apt-get update
源-解决该问题的链接
评论
我仍然遇到相同的错误,GPG错误:http://download.opensuse.org/repositories/home:/colomboem/xUbuntu_16.04发布:以下签名无效:
– Itamar Katz
20-4-13在8:58
#8 楼
确保已安装apt-transport-https
:dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update;
sudo apt-get install apt-transport-https -y"
添加存储库:
curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add -
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list
安装Skype for Linux:
sudo apt-get update
sudo apt-get install skypeforlinux -y
来源:https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-因为-/ td-p / 4645756
#9 楼
更一般而言,以下方法应适用于每个存储库。首先,在最终的搜索引擎帮助下,在程序提供者的网站上搜索如下所示的文本:-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----
例如显示这样的文本在http://deb.opera.com上。复制段落,将其粘贴到您在桌面上创建的空文件中。这将生成密钥文件。
然后继续导入密钥:
应用程序> Sofware Center
编辑> Sofware源。 。,输入密码
“身份验证”选项卡,单击“导入密钥文件...”。
选择已保存的密钥文件,然后单击“确定”。
您现在可以删除先前创建的密钥文件。
#10 楼
好!我终于找到了方法!我已经测试了解决GPG错误NO_PUBKEY的所有方法,但对我没有任何帮助。
我已经删除了文件夹/的全部内容etc / apt / trusted.gpg.d
cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update
我使用Y-PPA-Manager方法是因为我太懒了,无法手动创建所有pubkey(太多了):http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/
再次运行sudo apt-get update,最后一切正常! Tanks!
基于源代码:https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540上的帖子#17
评论
这也是唯一对我有用的东西。大概是某个地方的密钥文件损坏了?
–唐纳克
18年4月3日在7:33
#11 楼
我在DynDNS的Updater客户端上遇到了同样的问题。原来它只是过期的密钥。
重新安装软件(从网站上下载新的
.deb
,然后使用软件中心重新安装)解决了该问题。错误消息供参考:
W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
#12 楼
如果PPA的apt列表文件指向本地密钥环,例如deb [signed-by=/usr/share/keyrings/SOMETHING.gpg] https://download.something.org/something something/
,并且该文件可能存在于您的系统上(可能是通过先前的命令),可能由于缺少权限而无法读取。我只是在获取密钥环文件后通过运行
chmod 644 /usr/share/keyrings/*
来解决这种错误。根本的问题是当我已经是root用户时使用
sudo
的情况。真的很奇怪,因为所有这些都是根目录,并且在任何地方都没有访问权限失败消息...但是已经解决了
评论
相关:askubuntu.com/q/127326/178596'一个平均值'?很好奇你的意思。
您可以检查此SO线程以寻求解决方案。链接到相关网站
@MichaelScheper'是否有不打开终端的手段? =〜'有没有没有终端的方法吗?'
@Wilf:哦!我并不是故意要挑剔语法,但这确实使我感到困惑。从我刚刚检查的参考文献中,“ means”是一个单数名词,也就是您要表达的意思。 dictionary.cambridge.org/dictionary/english/means但是,如果您和Agmentor使用某种变体形式的英语,而该语法在问题中是正确的,那么我希望看到对它的引用,仅因为我对此感兴趣诸如此类的事情。 br