如何在apt来源密钥环中添加GPG密钥?


67

Ubuntu Doc页面说:

建议您添加Opera GPG密钥。

wget -qO - http://deb.opera.com/archive.key | sudo apt-key add -

我在哪里添加?

我想接受建议,但是我不知道在软件中心的哪个部分添加gpg密钥。


3
我相信这是一个命令行的进入终端

1
Ubuntu中的.msi称为.deb。
阿尔瓦(Alvar)

4
附带说明一下,添加通过非HTTPS获取的密钥会破坏对添加的签名程序包的任何安全性。只要有可能,您都应该通过安全通道(https://)下载密钥。

Answers:


86

这是一行输入到终端的命令。请参阅 什么是终端机以及如何打开和使用它?

要使用它,您需要将整个命令粘贴到终端中(请记住使用https):

wget -qO - https://deb.opera.com/archive.key | sudo apt-key add -

但是,当然,仅复制和粘贴命令而不知道它们在做什么就令人生畏,并且没有有关如何撤消其操作的说明,因此这是命令的基本分类:

  • wget从服务器下载内容。请参阅Ubuntu 16.04的wget手册
  • | 是一条管线,它接受一个命令的输出并将其运行到另一个命令的输入中
  • apt-key add 添加一个包密钥

因此,它基本上是下载密钥,然后将其添加到一个命令中。

我测试了该命令,它应该可以工作。


现在,要验证它是否有效,请运行以下命令(来自此答案):

apt-key list

这将列出添加的键,并且Opera的键应在底部列出,如下所示:

pub   1024D/30C18A2B 2012-10-29 [expires: 2014-10-29]
uid                  Opera Software Archive Automatic Signing Key 2013 <packager@opera.com>
sub   4096g/C528FCA9 2012-10-29 [expires: 2014-10-29]

链接的答案还显示,您可以根据需要使用以下方法删除密钥:

sudo apt-key del 30C18A2B

30C18A2B是从列表中密钥ID。


执行完该命令,并完全按照屏幕截图所示设置源之后,请执行以下操作:

sudo apt-get update
sudo apt-get install opera

(请注意,有一些随机警告,但不会影响安装或软件中心的操作)

对于删除(以防万一):完全删除应用程序的正确方法是什么?


因此,总而言之:

  • 添加资料库 在此处输入图片说明
  • 用添加键 apt-key
  • 在终端安装 apt-get
  • 在破折号中搜索 在此处输入图片说明

4
“ apt-key adv”允许从公共密钥服务器下载密钥。
耶利米

用添加密钥后apt-key add,可以删除.key文件(在本例中为“ archive.key”),而不会产生任何后果,对吗?密钥(信息而不是文件)已经添加到某个位置的列表中,因此不再需要该文件。
Cerran

2
@Cerran,正确。APT保持键别的地方/etc/apt/trusted.gpg.d/以及/var/lib/apt/keyrings/例如。)
亚历克西斯维尔克

如果使用wget遇到SSL错误,则可以改用curl:curl -L https://deb.opera.com/archive.key | sudo apt-key add -
rubo77,

23

如果要从PPA手动添加密钥,请使用

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 00000000

00000000要添加的PPA网站中告知的密钥的第二部分代替。

例如,如果您找到以下行:

 4096R/7BF576066

仅使用第二部分(无论其大小),在此示例中为 7BF576066


gpg: keyserver receive failed: No keyserver availablegpg: keyserver receive failed: Connection refused常见的错误?
iuridiniz

不,此类错误并不常见。也许您写错了密钥。
Paulo Coghi

19

较新版本的apt还支持以下功能:

apt-key adv --fetch-keys http://deb.opera.com/archive.key

此方法还提供了更详细的反馈,例如:

gpg: key 7BD9BF62: public key "signing key <username@domain.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

这还具有消除对诸如wget或curl之类的其他依赖项的需要的额外好处。


1
apt-key adv似乎不适用于https
danihodovic

5
@ dani-h gnupg-curl如果您使用的是GPG 1.x,则需要使用HTTPS。
汪涛

apt-key adv --fetch-keys只会从网址中提取一个密钥,如果网址包含多个密钥,请wget | apt-key add改用。
涛王

它似乎已经可以与https一起使用(刚刚在Ubuntu 17.10上进行了测试)
user1182474 '18

0

如果您只有.asc密钥,则可以下载.asc密钥并将其添加到密钥环中。

例如 -

curl -L https://packages.riot.im/debian/repo-key.asc | sudo apt-key add -
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.