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警告,可以按以下步骤迁移:
- 列出旧密钥:
找到对应软件的密钥ID(比如Cassandra密钥的长ID)sudo apt-key list - 导出并迁移密钥:
sudo apt-key export <密钥ID> | gpg --dearmor | sudo tee /usr/share/keyrings/cassandra-archive-keyring.gpg > /dev/null - 删除旧密钥:
sudo apt-key del <密钥ID> - 修改对应的源配置,加上
signed-by参数(参考前面的步骤)
按照上面的步骤操作,不管是手动配置单台服务器,还是用Ansible批量管理,应该都能彻底解决apt-key弃用的警告,还有Cassandra的密钥配置问题。
备注:内容来源于stack exchange,提问作者semih kabasakal
相关产品推荐
相关产品推荐

