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

使用Ansible的apt_key模块删密钥时提示‘Invalid key_id’

解决Ansible删除Ubuntu主机/etc/apt/trusted.gpg密钥时的"Invalid key_id"错误

问题根源

Ubuntu 20.04+版本中,apt-key命令已被弃用,系统APT密钥管理的默认结构发生变化,Ansible的apt_key模块对老式/etc/apt/trusted.gpg密钥环的兼容性下降,且8位短密钥ID容易出现冲突或无法被正确识别。

解决步骤

1. 获取正确的长密钥ID

在目标Ubuntu主机上执行以下命令,提取/etc/apt/trusted.gpg中密钥的16位长ID:

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --list-keys

输出示例:

pub rsa4096 2018-09-18 [SC] [expires: 2025-09-16]
7EA0A9C3F273FCD8
uid [ unknown ] Docker Release (CE deb) docker@docker.com

这里的7EA0A9C3F273FCD8就是需要使用的长密钥ID,不要使用8位短ID。

2. 改用gpg命令直接删除密钥

放弃使用Ansible的apt_key模块,直接调用gpg命令操作密钥环,规避模块兼容性问题。示例任务:

- name: 删除/etc/apt/trusted.gpg中冲突的APT密钥
  command: gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --delete-keys "{{ item }}"
  loop:
    - "7EA0A9C3F273FCD8"
    - "另一个冲突的长密钥ID"
  changed_when: false
  # 仅当密钥存在但删除失败时触发错误,密钥不存在时忽略
  failed_when: "'not found in keyring' not in stderr and rc != 0"
  become: true

3. 迁移密钥到规范目录(可选)

为了符合APT新的密钥管理规范,建议将需要保留的密钥从/etc/apt/trusted.gpg迁移到/etc/apt/trusted.gpg.d/目录下的单独文件,避免后续冲突:

- name: 将密钥导出到trusted.gpg.d目录
  command: gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export "{{ item }}" > /etc/apt/trusted.gpg.d/{{ item }}.gpg
  loop:
    - "需要保留的长密钥ID"
  args:
    creates: /etc/apt/trusted.gpg.d/{{ item }}.gpg
  become: true

内容的提问来源于stack exchange,提问作者hydrian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:49:58