首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:不建议使用apt键。改为管理受托人中的密钥环文件。

警告:不建议使用apt键。改为管理受托人中的密钥环文件。
EN

Stack Overflow用户
提问于 2021-08-31 04:14:52
回答 5查看 70.6K关注 0票数 55

我在本指南之后安装了elasticsearch,但是elasticsearch并不是这个问题的一部分。

在第一步中,我需要添加键:

代码语言:javascript
复制
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

收到了以下信息:

代码语言:javascript
复制
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

安装过程很好,但是由于不推荐安装,所以我正在寻找替代apt-key的新用法。(我安装这个软件包没有问题。)从man apt-key我看到

apt键(8)将在Debian 11和Ubuntu 22.04中持续使用。 ..。 因此,与任何apt版本一起使用的二进制密钥环文件应该始终使用gpg -导出。

但它并没有提到替代apt-key add的方法。我试过了

代码语言:javascript
复制
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --export

但没起作用。那么,当wget被移除时,在apt-key管道之后使用什么呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2022-03-07 16:16:28

/etc/apt/trusted.gpg.d添加密钥是不安全的,因为它为所有存储库添加了密钥。这就是为什么要反对apt键的原因。

短版

信号做的事。如果您想在https://example.com/EXAMPLE.gpg上使用/etc/apt/sources.list.d/EXAMPLE.list中列出的存储库的密钥,请使用:

代码语言:javascript
复制
wget -O- https://example.com/EXAMPLE.gpg |\
    gpg --dearmor |\
    sudo tee /usr/share/keyrings/EXAMPLE.gpg > /dev/null

echo "deb [signed-by=/usr/share/keyrings/EXAMPLE.gpg] https://example.com/apt stable main" |\
    sudo tee /etc/apt/sources.list.d/EXAMPLE.list

# Optional (you can find the email address / ID using `apt-key list`)
sudo apt-key del support@example.com

长版

虽然反对通知建议向/etc/apt/trusted.gpg.d添加密钥,但这是一个不安全的解决方案。引用这篇文章来自Linux起义

进行此更改的原因是,当添加用于将APT存储库签名到/etc/apt/trusted.gpg/etc/apt/trusted.gpg.d的APT密钥时,在没有signed-by选项的系统上配置的所有其他存储库上的APT都无条件地信任该密钥,甚至官方的Debian / Ubuntu存储库也是如此。因此,任何将其签名密钥添加到/etc/apt/trusted.gpg/etc/apt/trusted.gpg.d中的非官方APT存储库都可以替换系统上的任何包。因此,此更改是出于安全原因(您的安全性)。

正确的解决方案将在Linux起义文章Debian Wiki中解释:将密钥存储在/usr/share/keyrings/中,然后在apt源列表中引用键。

因此,适当的方法如下:

  1. https://example.com/EXAMPLE.gpg下载密钥并将其存储在/usr/share/keyrings/EXAMPLE.gpg中。Debian wiki解释说,为了与旧的软件兼容,您应该解除密钥(即从base64转换为二进制)的护甲。> /dev/null只需阻止二进制键显示在终端中。wget -O- https://example.com/EXAMPLE.gpg \ gpg --de盔甲\ sudo tee /usr/share/keyring/EXAMPLE.gpg> /dev/null 还可以通过运行file /usr/share/keyrings/EXAMPLE.gpg和检查输出来验证您下载的文件确实是PGP密钥。
  2. 将密钥添加到存储库使用的源文件中。在/etc/apt/sources.list.d/中找到适当的文件并编辑它,使其链接到您刚才添加的键环。如果文件不存在,您可以创建一个文件。最后,它应该是这样的: deb签名-by=/usr/share/keyring/EXAMPLE.gpg https://example.com/apt稳定main
  3. 如果之前添加了密钥,则从apt-key中删除它。运行sudo apt-key list列出所有键,并找到先前添加的键。使用密钥的电子邮件地址或指纹,运行sudo apt-key del support@example.com

其他资源

票数 50
EN

Stack Overflow用户

发布于 2021-09-01 14:09:12

在这里找到答案:https://suay.site/?p=526

简言之:

检索密钥并添加键:

代码语言:javascript
复制
curl -s URL | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/NAME.gpg --import

授权用户_apt:

代码语言:javascript
复制
sudo chown _apt /etc/apt/trusted.gpg.d/NAME.gpg
票数 18
EN

Stack Overflow用户

发布于 2022-06-08 06:58:07

正如在当前接受答案中提到的,向/etc/apt/trud.gpg.d添加密钥是不安全的,因为它为所有存储库添加了密钥。这就是为什么apt-key会发出警告。

您可以使用更简单的解决方案,如下所示:

代码语言:javascript
复制
curl -fsSL https://example.com/EXAMPLE.gpg | sudo gpg --dearmor -o /usr/share/keyrings/EXAMPLE.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/EXAMPLE.gpg] \
 https://example.com/apt stable main" \
| sudo tee -a /etc/apt/sources.list.d/EXAMPLE.list > /dev/null

sudo apt update
sudo apt install <package-name>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68992799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档