You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

apt-key弃用后的替代命令及Ansible密钥环管理求助(含Ros、Cassandra场景)

apt-key弃用后的替代命令及Ansible密钥环管理求助(含Ros、Cassandra场景)

我懂你熬了六七个小时卡在这里的烦躁,这就给你把apt-key弃用后的正确操作、Ansible批量管理密钥环的方法,还有你遇到的Cassandra密钥配置问题,一步步讲清楚:


一、替代apt-key的准确手动命令

apt-key被弃用后,官方推荐把每个软件的密钥单独存放在/usr/share/keyrings/(或/etc/apt/trusted.gpg.d/)目录下的独立密钥环文件中,并且要将ASCII格式的密钥转为二进制脱装甲格式(apt优先识别这种格式)。

1. 从远程URL导入密钥(以Cassandra为例)

原来的旧命令(已弃用):

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <密钥ID>

替代的正确命令:

# 下载密钥并脱装甲后写入专属密钥环文件
curl -fsSL https://downloads.apache.org/cassandra/KEYS | gpg --dearmor | sudo tee /usr/share/keyrings/cassandra-archive-keyring.gpg > /dev/null

2. 本地密钥文件导入

如果密钥已经存在本地,执行:

gpg --dearmor /path/to/your-local-key.asc | sudo tee /usr/share/keyrings/your-package-keyring.gpg > /dev/null

3. 修改软件源配置

关键一步:必须在对应的sources.list或/etc/apt/sources.list.d/下的源文件中,添加signed-by参数指定密钥环路径,比如Cassandra的源要改成:

deb [signed-by=/usr/share/keyrings/cassandra-archive-keyring.gpg] https://debian.cassandra.apache.org 40x main

这样apt就会用专属密钥环验证该源的包,不会再触发弃用警告。


二、用Ansible Playbook管理密钥环(适配Cassandra场景)

如果是批量服务器配置,用Ansible可以自动化完成整个流程,以下是完整的剧本片段:

- name: 自动化配置Cassandra密钥及APT源(替代apt-key)
  hosts: your_target_servers  # 替换成你的目标主机组
  become: yes
  tasks:
    # 确保密钥环目录存在(一般默认已有,但保险起见加上)
    - name: 确保/usr/share/keyrings目录存在
      file:
        path: /usr/share/keyrings
        state: directory
        mode: '0755'

    # 下载Cassandra官方密钥
    - name: 下载Cassandra GPG密钥文件
      get_url:
        url: https://downloads.apache.org/cassandra/KEYS
        dest: /tmp/cassandra-keys.asc
        mode: '0644'

    # 将ASCII密钥转为二进制脱装甲格式,写入专属密钥环
    - name: 生成Cassandra专属密钥环
      shell: gpg --dearmor /tmp/cassandra-keys.asc > /usr/share/keyrings/cassandra-archive-keyring.gpg
      args:
        creates: /usr/share/keyrings/cassandra-archive-keyring.gpg  # 仅当文件不存在时执行

    # 添加带签名验证的Cassandra源
    - name: 添加Cassandra APT源
      apt_repository:
        repo: "deb [signed-by=/usr/share/keyrings/cassandra-archive-keyring.gpg] https://debian.cassandra.apache.org 40x main"
        state: present
        filename: cassandra  # 源文件会被保存为/etc/apt/sources.list.d/cassandra.list

补充:迁移旧密钥(解决“legacy trusted.gpg”警告)

如果你的服务器已经用apt-key把密钥存到了/etc/apt/trusted.gpg里,触发了Key is stored in legacy trusted.gpg警告,可以按以下步骤迁移:

  1. 列出旧密钥:
    sudo apt-key list
    
    找到对应软件的密钥ID(比如Cassandra密钥的长ID)
  2. 导出并迁移密钥:
    sudo apt-key export <密钥ID> | gpg --dearmor | sudo tee /usr/share/keyrings/cassandra-archive-keyring.gpg > /dev/null
    
  3. 删除旧密钥:
    sudo apt-key del <密钥ID>
    
  4. 修改对应的源配置,加上signed-by参数(参考前面的步骤)

按照上面的步骤操作,不管是手动配置单台服务器,还是用Ansible批量管理,应该都能彻底解决apt-key弃用的警告,还有Cassandra的密钥配置问题。

备注:内容来源于stack exchange,提问作者semih kabasakal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:59:33