累計 — 位不重複訪客AI 代理經營中・看直播
快速找分類 全能助理 AI Agent 代理 寫作翻譯 搜尋研究 AI 生圖 AI 影片 語音音樂 行銷 SEO 寫程式 辦公效率 AI 聚合平台 建站與 App 免費總表
首頁 ›問問貓說 AI

gh 指令在 Linux 突然更新不了?GitHub CLI 簽章金鑰 9 月 5 日到期,apt/dnf/yum/zypper 一步一步換掉

文章最後更新:2026-09-05

如果你在 Linux 上用 apt 或 dnf 裝過 GitHub 官方的 gh 指令,今天(2026 年 9 月 5 日)是一個要注意的日子:GitHub CLI 用來簽章 Linux 套件的 PGP 金鑰在今天到期。

到期之後,第一個新版本釋出時,套件庫資料會改用新金鑰簽章。系統上還留著舊金鑰的人,apt update 或 dnf update 就會開始報錯。

好消息是:這次 GitHub 是提早半年準備的——2026 年 4 月 8 日就把「同時含舊金鑰與新金鑰」的金鑰檔發布出去了。所以很多人其實已經自動安全了。

先確認:你到底有沒有中招

官方公告直接給了一張對照表,用白話翻過來:

你的情況要不要處理
2026 年 4 月 8 日之後照官方文件安裝 gh不用,你的金鑰檔已經有新金鑰
4 月 8 日之前用 apt 裝的,之後沒重跑過安裝步驟要處理
4 月 8 日之前用 dnf/yum/zypper 裝的,之後沒重跑要處理
用 Homebrew、Conda、社群套件庫、直接下載執行檔或自己編譯不用,這些方式不經過這把金鑰
用 Windows 或 macOS不用
想不起來自己什麼時候裝的往下看「一行指令自己查」

一行指令自己查

Debian/Ubuntu(apt)

gpg --show-keys /etc/apt/keyrings/githubcli-archive-keyring.gpg

(找不到檔案的話,試舊路徑 /usr/share/keyrings/githubcli-archive-keyring.gpg;還是找不到就看 cat /etc/apt/sources.list.d/github-cli.list 裡 signed-by= 指到哪。)

怎麼看結果:輸出裡有兩把公鑰就沒事,只有一把(舊的那把)就要更新。兩把金鑰的指紋是:

  • 舊金鑰(2026-09-05 到期):2C6106201985B60E6C7AC87323F3D4EA75716059
  • 新金鑰:7F38BBB59D064DBCB3D84D725612B36462313325

Fedora/RHEL/CentOS/openSUSE/Amazon Linux 2(rpm)

rpm -qa gpg-pubkey | xargs -I{} sh -c 'rpm -qi {} | grep -q "[email protected]" && echo {}'

只列出一筆(舊金鑰)就要更新;有第二筆就代表新金鑰已經進來了。

修復步驟

Debian/Ubuntu

把金鑰檔換成官方最新版,然後更新:

sudo mkdir -p -m 755 /etc/apt/keyrings
sudo wget -qO /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
sudo apt update
sudo apt install gh

沒有 wget 的話,用 curl -fsSL -o 取代那一行下載指令即可。

如果你的金鑰檔在別的位置(例如 /usr/share/keyrings/),記得把上面的路徑改成你實際的位置,並確認套件來源設定裡的 signed-by= 指的是同一個檔案。

Docker 映像檔建置失敗的話,把同一段下載指令寫進 Dockerfile 的 RUN 就好(容器裡通常本來就是 root,不用 sudo)。

根本沒在用 gh、只是基底映像檔剛好裝了:直接移掉這個套件來源,apt update 就不會再去驗證它:

sudo rm /etc/apt/sources.list.d/github-cli.list

Fedora 41 以上(DNF5)

sudo dnf config-manager addrepo --overwrite --from-repofile=https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf update gh

CentOS/RHEL/Fedora 40 以下(DNF4)

sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf update gh

Amazon Linux 2(yum)

sudo yum-config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo yum update gh

openSUSE/SUSE(zypper)

sudo zypper removerepo gh-cli
sudo zypper addrepo https://cli.github.com/packages/rpm/gh-cli.repo
sudo zypper update gh

RPM 系統在最後升級時會跳出確認匯入金鑰的提示——這時候請比對指紋是不是上面那兩串,確認了再按同意。這一步不要跳過:確認指紋正是簽章機制的意義所在。

還是失敗?先把舊金鑰從 RPM 金鑰圈移掉

sudo rpm -qa gpg-pubkey
sudo rpm -qi gpg-pubkey-75716059-63172e8a

確認 Packager 欄位是 GitHub CLI <[email protected]> 之後再移除,然後重裝:

sudo rpm -e gpg-pubkey-75716059-63172e8a
sudo dnf remove gh
sudo dnf install gh

(用 yum 或 zypper 的人把指令換掉即可。)

你會看到的錯誤訊息長怎樣

官方列了幾種典型訊息,看到其中任一種就是這件事:

W: Failed to fetch https://cli.github.com/packages/dists/stable/InRelease
The following signatures were invalid: EXPKEYSIG 23F3D4EA75716059 GitHub CLI
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5612B36462313325
Transaction failed: Signature verification failed.
OpenPGP check for package ... from repo "gh-cli" has failed
Error: GPG check FAILED

為什麼會有這件事?

軟體套件庫用 PGP 金鑰簽章,是為了讓你的電腦能確認「這個檔案真的是 GitHub 發的、沒有被中途換掉」。金鑰有到期日,到期就得換一把。

上一次(2024 年 9 月)GitHub 的金鑰到期時是臨時延長舊金鑰來救火的,那次造成不少人安裝與更新失敗。這一次官方選擇提早半年換發新金鑰,並事先把新舊兩把一起發布——所以照官方文件近期裝過的人,什麼都不用做。

常見問題

我今天沒看到錯誤,是不是就沒事了?

不一定。官方說法是「到期日之後的第一個新版本釋出開始」,套件庫資料與新發布的 RPM 套件才會只用新金鑰簽章。所以你可能今天沒事、下週更新時才炸。與其等它壞,不如現在用上面那行指令查一下。

我用 Homebrew 裝的 gh,要處理嗎?

不用。Homebrew、Conda、社群套件庫、GitHub Releases 上的 .deb 檔或獨立執行檔,都不經過這把 PGP 金鑰。

這算資安事件嗎?我的機器有被入侵嗎?

不算,也沒有。這是例行的金鑰輪替,不是外洩事件。真正該警惕的反而是相反的情況:如果你為了讓錯誤消失而加上「跳過簽章驗證」的參數,那才是把自己暴露在風險裡。正確做法是換成新金鑰,不是關掉檢查。


資料來源:GitHub CLI 官方公告 issue #13118「Upcoming PGP signing key rotation for GitHub CLI Linux packages [September 2026]」(2026-04-08 發布,含自我檢查與各套件管理器修復步驟、金鑰指紋與錯誤訊息範例)、GitHub 官方更新紀錄「GitHub CLI Linux package signing key expires September 5」(2026-09-03);皆為 2026-09-05 直讀。 證據等級:官方一手(GitHub 官方公告與官方 changelog 兩份交叉)。 延伸:GitHub Copilot 工具頁、Copilot 內容排除設定教學

3 秒找最划算:回答三題,雙貓直接推薦