当前位置:首页 > 文章列表 > 科技周边 > 业界新闻 > GitHub CLI 的 Linux 签名密钥到期后怎么更新

GitHub CLI 的 Linux 签名密钥到期后怎么更新

来源:17golang原创 2026-09-06 00:20:11 0浏览 收藏

如果你在 Debian、Ubuntu、Fedora 或其他 Linux 发行版上通过 GitHub CLI 官方 APT/RPM 仓库安装了 gh,先更新本地 keyring 或仓库配置,再执行包管理器更新。GitHub CLI 的旧签名密钥已在 2026 年 9 月 5 日到期;新 keyring 已包含替换密钥。通过 Homebrew、Conda、源码、GitHub Releases 二进制包安装的用户不属于这次轮换范围。

最稳妥的处理顺序是:先确认安装渠道,再确认本地是否已有新指纹;只有旧 keyring 的官方 APT/RPM 用户需要刷新信任配置,随后再运行 apt、dnf、yum 或 zypper 更新。
要点速览
  • 旧指纹为 2C6106201985B60E6C7AC87323F3D4EA75716059,新指纹为 7F38BBB59D064DBCB3D84D725612B36462313325
  • Debian/Ubuntu 更新 githubcli-archive-keyring.gpg;RPM 系发行版重新获取官方 gh-cli.repo
  • Docker 镜像要在 apt update 前拉取新 keyring,不使用 gh 的基础镜像可以删除残留仓库。

先确认安装渠道和本机信任链

这不是一次所有用户都要做的 gh 升级。GitHub 公告把影响面限定在 Linux 官方 APT 和 RPM 仓库:如果是在 2026 年 4 月 8 日新 keyring 发布前按官方文档安装,且之后没有重新执行安装配置,就应当检查。已经使用新安装流程的用户,本地 keyring 通常已经同时包含旧、新两把公钥。

GitHub CLI Linux 包仓库、旧新 PGP 密钥、本地 keyring 与 APT RPM 的信任关系图
图1:GitHub CLI Linux 包的签名信任关系,先确认本地 keyring 是否已经同时包含新旧密钥。

Debian/Ubuntu 可以直接查看 keyring。若推荐路径不存在,再检查旧路径或 APT 源文件中的 signed-by 值:

# 查看推荐路径中的公钥,确认是否有两条 pub 记录
gpg --show-keys /etc/apt/keyrings/githubcli-archive-keyring.gpg

# 文件不在推荐路径时,尝试旧路径或查看 APT 源配置
gpg --show-keys /usr/share/keyrings/githubcli-archive-keyring.gpg
cat /etc/apt/sources.list.d/github-cli.list

如果输出同时出现旧指纹和 7F38BBB59D064DBCB3D84D725612B36462313325,就不必重复导入。RPM 系统则可以查看已导入的 GitHub CLI 公钥;只有一个旧条目时才需要继续更新。

# 只筛选包描述中属于 GitHub CLI 的 RPM 公钥
rpm -qa gpg-pubkey | xargs -I{} sh -c 'rpm -qi {} | grep -q "opensource+cli@github.com" && echo {}'

Debian/Ubuntu 直接替换 keyring

APT 用户不需要手工拼接新指纹,也不要关闭签名校验。重新下载官方 keyring 文件即可,关键是保存位置必须和 /etc/apt/sources.list.d/github-cli.list 里的 signed-by 一致。推荐位置不存在时先创建目录,并保证 APT 能读取该文件。

# 创建 APT keyring 目录,权限只覆盖目录本身
sudo mkdir -p -m 755 /etc/apt/keyrings

# 下载同时包含旧、新密钥的官方 keyring,并开放读取权限
sudo curl -fsSL -o /etc/apt/keyrings/githubcli-archive-keyring.gpg   https://cli.github.com/packages/githubcli-archive-keyring.gpg   && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg

# 先刷新仓库元数据,再安装或升级 gh
sudo apt update
sudo apt install gh

完成后再用 gpg --show-keys 检查,应该能看到新指纹。遇到 NO_PUBKEY 5612B36462313325EXPKEYSIG 23F3D4EA75716059 等错误,优先检查实际 signed-by 路径是否仍指向另一份旧文件;不要只更新了一个未被 APT 使用的副本。

RPM 系发行版按包管理器刷新 repo

RPM 系统把公钥导入自己的 keyring,处理重点不是覆盖某个 APT 文件,而是重新获取官方仓库配置,使它引用更新后的 keyring。先运行 dnf --version 判断 DNF5 还是 DNF4,再选择对应命令。

环境刷新仓库随后更新
Fedora 41+dnf config-manager addrepo --overwrite --from-repofile=...dnf update gh
Fedora 40 及更早、RHEL/CentOSdnf config-manager --add-repo ...dnf update gh
Amazon Linux 2yum-config-manager --add-repo ...yum update gh
openSUSE/SUSE移除后重新添加 gh-cli repozypper update gh
# DNF5:Fedora 41 或更新版本,覆盖旧 repo 配置
sudo dnf config-manager addrepo --overwrite   --from-repofile=https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf update gh

# DNF4:Fedora 40 及更早版本或对应 RHEL/CentOS
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf update gh

执行升级时,包管理器可能询问是否导入 PGP key。确认新指纹是 7F38BBB59D064DBCB3D84D725612B36462313325 后再接受;旧指纹是 2C6106201985B60E6C7AC87323F3D4EA75716059。如果重复添加 repo 后仍报旧 key 错误,再按官方说明确认并移除对应旧的 gpg-pubkey 条目,然后重新安装 gh

Docker 和自动化镜像要把 keyring 放在 apt update 之前

容器最容易把旧 keyring 固定在历史层里:前一层添加了 GitHub CLI 仓库,后一层才运行 apt-get update,于是宿主机已经修复,镜像构建仍然失败。控制 Dockerfile 时,在任何包列表更新之前重新拉取 keyring,并让后续层使用同一文件。

# 在执行 apt update 前刷新镜像内的官方 keyring
RUN wget -qO /etc/apt/keyrings/githubcli-archive-keyring.gpg     https://cli.github.com/packages/githubcli-archive-keyring.gpg     && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg

# 如果镜像根本不需要 gh,则移除残留源,避免无关校验阻断构建
RUN rm -f /etc/apt/sources.list.d/github-cli.list

这两个动作按实际用途二选一:需要安装或升级 gh 就保留仓库并刷新 keyring;只是继承了带仓库的基础镜像,就删除源。不要以禁用 GPG 校验的方式绕过问题。

GitHub CLI Linux 签名密钥轮换中 APT、DNF、Zypper、Docker 和复查路径的原创说明图
图2:按包管理器选择刷新路径,更新 keyring 或 repo 后再进行包列表更新。

常见问题

Windows 或 macOS 需要更新这把 Linux 签名密钥吗?

不需要。这次公告针对 Linux APT/RPM 包仓库;Windows、macOS 和源码构建不使用这条 Linux 包签名路径。

通过 Homebrew 或 Conda 安装 gh 会受影响吗?

不受这次仓库密钥轮换影响。社区包管理器、Homebrew、Conda、GitHub Releases 的直接二进制包各自有独立的分发和校验方式。

keyring 里已经有新旧两把 key,还要重装 gh 吗?

通常不用。先确认 APT 的 signed-by 或 RPM 的 repo 配置确实引用了这份 keyring,然后重新运行包列表更新即可。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
冷眸软件库权限安全吗?Android安装、隐私政策与版本核对冷眸软件库权限安全吗?Android安装、隐私政策与版本核对
上一篇
冷眸软件库权限安全吗?Android安装、隐私政策与版本核对
Go 创建文件的权限为什么与传入值不同
下一篇
Go 创建文件的权限为什么与传入值不同
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • SuperCLUE中文大模型评测基准:功能、能力维度与应用指南
    SuperCLUE
    SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    155次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    85次使用
  • ClickPrompt:AI提示词生成与优化工具,支持Stable Diffusion、ChatGPT及代码辅助
    ClickPrompt
    ClickPrompt是一款专为AI提示词编写者设计的开源在线工具,支持Stable Diffusion绘图、ChatGPT对话及GitHub Copilot代码辅助。提供Prompt自动生成、一键运行、社区分享及可视化优化功能,帮助用户高效获取精准AI输出。
    45次使用
  • PromptHero官网:AI提示词搜索、优化与学习平台,支持Midjourney/Stable Diffusion
    PromptHero
    PromptHero是专业的AI提示词搜索引擎与优化平台,支持Stable Diffusion、Midjourney等主流模型。提供海量提示词库、分类搜索、在线课程及社区互动,助力用户高效生成高质量AI图像与文本。
    25次使用
  • OpenArt免费开源指南:Stable Diffusion Prompt Book提示词手册详解
    Stable Diffusion Prompt Book
    深入解析OpenArt推出的Stable Diffusion Prompt Book,这本免费的开源提示词指南涵盖从基础语法到高级技巧,提供风格化词库与参数建议,助您优化AI绘画生成效果。
    28次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码