当前位置: 首页 > article >正文

记录一次 apt-key curl导入失败的处理方式

在配置 Kubernetes APT 仓库的过程中,我们通常会执行如下命令来添加阿里云的 GPG 公钥:

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

但这次在某台新机器上执行时,出现了访问失败的问题。具体表现为 curl 命令无法成功连接,导致 apt-key 添加失败。该问题可能与网络、DNS、代理、防火墙等因素有关。

问题表现

执行命令时报错如下:

gpg: no valid OpenPGP data found.

aliyun 可能突然抽风了,这个地址怎么都访问不了,但我需要导入它的 apt-key.gpg

至于为何不用其他源,是因为要尽可能统一环境

解决思路:导出已有的 apt-key 并导入到新机器

幸运的是,我之前在另一台机器上成功添加过该公钥,于是想到是否可以导出密钥文件再导入到当前机器。这个方法验证有效,步骤如下:

1. 在已有公钥的老机器上导出 key

首先确认该 key 已经被正确添加:

apt-key list

你应该能看到形如如下的条目(一般含有 AliyunKubernetes 的说明):

但这里阿里云的 key 是叫 cloud-...,我是通过按时间来找到这个对应的 key 的。

pub   rsa2048 2022-05-21 [SC]A362 B822 ... ...
uid           [ unknown] Rapture Automatic Signing Key (cloud-rapture-signing-key-2022-03-07-08_01_01.pub)
sub   rsa2048 2022-05-21 [E]

然后通过以下命令导出该 key:

apt-key export "A362 B822 ... ..." > aliyun-k8s.gpg

将其中的 A362 B822 ... ... 替换为实际的 Key ID(可以从 apt-key list 中找到)。

2. 将导出的 key 拷贝到目标机器

比如使用 scp

scp aliyun-k8s.gpg user@target-ip:/tmp/

3. 在目标机器导入该 key

登录目标机器,执行:

apt-key add /tmp/aliyun-k8s.gpg

看到如下提示表示导入成功:

OK

添加 aliyun 源,并 apt 更新:

echo 'deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main' > /etc/apt/sources.list.d/kubernetes.list
apt update

至此,APT 源就可以正常使用了。


总结

当无法联网或因为各种网络问题导致无法直接访问 GPG key 时,从已有机器导出 key 再导入,是一个非常实用的替代方案。这在企业内网、离线环境或者对外网访问有限制的情况下非常常见。

http://www.lryc.cn/news/2401910.html

相关文章:

  • Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
  • 【03】完整开发腾讯云播放器SDK的UniApp官方UTS插件——优雅草上架插件市场-卓伊凡
  • C:\Users\中文名修改为英文名
  • Web 架构相关文章目录(持续更新中)
  • Redis 安装配置和性能优化
  • 购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块
  • PostgreSQL 安全纵深防御:从权限到加密
  • 【美团技术团队】从实际案例聊聊Java应用的GC优化
  • 在word中点击zotero Add/Edit Citation没有反应的解决办法
  • 整合swagger,以及Knife4j优化界面
  • Unity | AmplifyShaderEditor插件基础(第四集:简易shader)
  • 【安全攻防与漏洞】​​量子计算对HTTPS的威胁:后量子密码学进展
  • linux C语言中的动态库 静态库说明
  • Flash烧录速度和加载配置速度(纯FPGA ZYNQ)
  • 解构与重构:PLM 系统如何从管理工具进化为创新操作系统?
  • Redis:介绍和认识,通用命令,数据类型和内部编码,单线程模型
  • N2语法 強調、限定
  • OpenAI 即将推出 GPT-5:开启多模态、持续记忆对话新时代
  • 《前端面试题:CSS预处理器(Sass、Less等)》
  • 嵌入式开发之STM32学习笔记day20
  • vue-19(Vuex异步操作和变更)
  • 人工智能-Chain of Thought Prompting(思维链提示,简称CoT)
  • [GESP202412 五级] 奇妙数字 题解
  • 《操盘实战》速读笔记
  • 元素 “cas:serviceResponse“ 的前缀 “cas“ 未绑定
  • CppCon 2014 学习:CHEAP, SIMPLE, AND SAFE LOGGING USING C++ EXPRESSION TEMPLATES
  • 专业级PDF转CAD解决方案
  • 如何屏蔽端口
  • nvidia系列教程-agx-orin安装ros
  • STM32 智能小车项目 两路红外循迹模块原理与实战应用详解