如何修正 GPG 錯誤:Ubuntu 中無法驗證以下簽名

首先確定是哪個軟體來源產生了警告,然後修復該軟體來源的金鑰或配置。不要停用 APT 簽名檢查。 「以下簽章無法驗證」的訊息表示 APT 無法確認軟體來源元資料是否由其信任的金鑰簽署。在簽名驗證通過之前,APT 可能會拒絕使用該軟體來源。新增隨機金鑰或將軟體來源設定為受信任狀態可以隱藏警告,但同時也會移除其本應提供的保護。

例如,假設某瀏覽器廠商的軟體倉庫sudo apt update報告出現NO_PUBKEY問題,而 Ubuntu 本身的歸檔更新卻正常。可能的解決方法是安裝該廠商目前發布的簽章金鑰,並將其作用域限定於該軟體倉庫。重新安裝 Ubuntu 的歸檔金鑰環並不能解決第三方金鑰問題。以下命令僅供參考:請將範例中的軟體倉庫詳細資訊替換為軟體發布者官方說明中的值。

在更改密鑰前,請先閱讀完整的錯誤訊息。

執行更新命令,並記下同一輸出行中的儲存庫 URL 和錯誤代碼:

sudo apt update

nobleAPT 通常透過 URL 和版本套件(例如 `/ etc /application/x-800` 或 `/etc/application/x-800`)來識別來源jammy。如果配置了多個來源,則可能會顯示多個錯誤。在進行任何更改之前,請將每個訊息與其對應的倉庫進行匹配。以下常見特徵指向不同的原因:

資訊或線索可能意義第一行動
NO_PUBKEYAPT 無法取得該儲存庫所需的公鑰,或來源未指向金鑰檔案。根據官方發布者的說明,確定儲存庫所有者並獲取其當前密鑰。
EXPKEYSIG用於簽署的金鑰已過期,或儲存庫的簽章設定需要更新。查看發行商目前的金鑰輪替通知;不要重複重新安裝已過期的金鑰。
BADSIG簽章與 APT 收到的元資料不符。可能是鏡像來源過期、代理伺服器故障、下載不完整或倉庫端有問題。檢查來源檔案、網路路徑和快取索引檔案後重試。
Release file is not valid yet或類似時間措辭系統時鐘可能落後於儲存庫的簽署時間戳記。檢查系統日期、時區和時間同步狀況。
密鑰已存在,但來源仍然報告密鑰未知。來源可能引用了不同的密鑰環、錯誤的路徑或 APT 無法讀取的密鑰檔案。檢查來源的Signed-By設定和密鑰環權限。

如果錯誤訊息中提到時間,請先檢查系統時鐘。

簽章和儲存庫元資料都有有效期限。從舊快照恢復的伺服器、雙啟動計算機或時間服務故障的計算機,其時鐘可能存在較大偏差,導致當前元資料顯示無效。請檢查系統時間:

timedatectl status

請確認顯示的日期和時間準確無誤,且時間同步已啟用。如果時脈錯誤,請修正主機的時間服務或啟用已設定的網路時間同步方法,然後重試sudo apt update。避免手動設定近似日期:時鐘應反映實際時間。時間更正無法修復遺失或過期的儲存庫金鑰,因此如果訊息仍然顯示NO_PUBKEY錯誤EXPKEYSIG,請繼續執行相關的關鍵步驟。

修復缺少或過期的第三方儲存庫金鑰

Ubuntu 目前的指南建議將第三方金鑰儲存在專用金鑰環中,並在匹配的來源中引用該金鑰Signed-By。這樣可以限制哪些金鑰可以驗證該儲存庫。 Ubuntu 在其第三方儲存庫指南中描述了這種方法,APT 則在sources.list 手冊中記錄如何Signed-By限定驗證範圍。

1. 找出導致錯誤的根源

列出儲存庫條目並蒐索 APT 輸出中顯示的主機:

grep -RniE '^[[:space:]]*(deb|URIs:)' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

Ubuntu 24.04 及更高版本通常使用以 .deb822 結尾的檔案.sources;較早的版本通常使用以 .deb822 結尾的單行檔案.list。 Ubuntu軟體包管理文件對這些來源格式進行了描述。請勿編輯 Ubuntu 歸檔條目來修復無關的供應商倉庫。

2. 取得並驗證發布商的目前金鑰

開啟軟體發布者的官方軟體倉庫設定頁面,確認其中列出了軟體倉庫 URL、支援的 Ubuntu 版本、簽署金鑰下載位置以及完整的金鑰指紋。僅從發布商指定的來源下載金鑰。請比對完整的指紋,而不僅僅是其後的簡短十六進位 ID。 APTNO_PUBKEY安全手冊強調透過可信任管道取得金鑰;信任錯誤的金鑰會破壞軟體倉庫的驗證。

以下範例使用 ASCII 編碼的密鑰。請將範例中的 URL 和檔案名稱替換為發布者的官方值:

curl -fsSLo /tmp/vendor-archive.asc https://packages.vendor.example/ubuntu/archive-key.asc
gpg --show-keys --with-fingerprint /tmp/vendor-archive.asc

只有當顯示的指紋與發布者記錄的指紋相符時才繼續。將其轉換為二進位密鑰環並將其放置在 APT 的本機密鑰環目錄中:

sudo install -d -m 0755 /etc/apt/keyrings
gpg --dearmor --output /tmp/vendor-archive.gpg /tmp/vendor-archive.asc
sudo install -m 0644 /tmp/vendor-archive.gpg /etc/apt/keyrings/vendor-archive-keyring.gpg

範例網域僅供參考,不會下載真實的供應商金鑰。請使用軟體發行商提供的經過驗證的金鑰 URL。切勿使用密鑰伺服器搜尋結果來取代確認密鑰所有權。

3. 在儲存庫來源中限定鍵的範圍

單行.list輸入的格式如下:

deb [signed-by=/etc/apt/keyrings/vendor-archive-keyring.gpg] https://packages.vendor.example/ubuntu noble main

對於 deb822.sources文件,對應的欄位如下所示:

Types: deb
URIs: https://packages.vendor.example/ubuntu
Suites: noble
Components: main
Signed-By: /etc/apt/keyrings/vendor-archive-keyring.gpg

這些是模板,並非通用的有效來源條目。請保留供應商官方安裝說明中的 URI、套件和元件;即使金鑰有效,錯誤的 Ubuntu 代號也可能導致軟體包衝突。確保密鑰環路徑與您安裝的檔案相符。金鑰環必須對 APT 的非特權_apt使用者可讀,因此範例使用 `--mode` 進行安裝0644。刪除或更正相同儲存庫的重複條目,以避免舊的非作用域條目繼續產生警告。

APT 的apt-key命令已棄用,不適用於常規的軟體倉庫設定。請避免使用全域新增第三方金鑰apt-key adv或將所有供應商金鑰放在同一個受信任金鑰環中的指南。使用作用域Signed-By條目可以更清楚地建立信任關係,並降低僅信任一個軟體倉庫金鑰的影響。

如果警告訊息針對的是 Ubuntu 本身的軟體倉庫。

首先檢查軟體倉庫套件是否與您已安裝的 Ubuntu 版本匹配,以及系統時鐘是否正確。 Ubuntu 歸檔簽章金鑰由軟體包提供ubuntu-keyring。如果已安裝的金鑰環損壞或過期,但 APT 仍可從已配置的有效 Ubuntu 來源下載和驗證軟體包,請使用下列命令重新安裝:

sudo apt install --reinstall ubuntu-keyring

然後再次運行sudo apt update。如果唯一失效的來源是過時的版本歸檔或提供不一致元資料的鏡像,重新安裝密鑰環可能無濟於事。在更改金鑰前,請檢查 Ubuntu 的版本支援和軟體倉庫配置。切勿使用從無關網站下載的金鑰來取代 Ubuntu 歸檔金鑰,也不要停用驗證以強制更新。

僅當元資料不符時才清除快取索引

如果 APTBADSIG在臨時網路中斷或鏡像/代理問題後報告,則本地快取的軟體包清單可能不完整或不一致。確認配置的來源合法後,僅清除快取的 APT 索引檔案並重新取得它們:

sudo rm -rf /var/lib/apt/lists/*
sudo apt update

此操作會刪除已下載的儲存庫索引,而非已安裝的軟體套件。 APT 會在下次更新時重建索引。如果BADSIG問題立即出現,請停止重複清理:檢查網路代理、快取網關或鏡像是否正在重寫或提供不匹配的元數據,並向發布者確認儲存庫的狀態。重複刪除索引並不能修復儲存庫自身發布的錯誤簽章。

確認修復並保持保護功能啟用狀態

再次運行sudo apt update並驗證受影響的儲存庫是否順利完成,沒有出現任何錯誤NO_PUBKEY、EXPKEYSIG錯誤BADSIG或簽名驗證警告。然後使用命令檢查該來源中的一個軟體包apt-cache policy package-name,並將名稱替換為實際的軟體包名稱。在安裝或升級該軟體包之前,請確認其候選版本來自預期的儲存庫。

請勿使用trusted=yes`<command>` allow-insecure=yes、`<command> --allow-unauthenticated` 或類似選項作為永久解決方案。 APT 的簽章檢查會驗證儲存庫元資料是否由您選擇信任的金鑰簽署;停用此功能表示 APT 將無法再提供完整性檢查。 APT安全手冊解釋了歸檔認證鍊及其限制。如果發布者已撤回儲存庫、停止對元資料進行簽名,或未提供可驗證的金鑰指紋,請移除或停用該儲存庫,而不是繞過驗證。

文件已於 2026 年 10 月 6 日審核。 Ubuntu 軟體倉庫格式和金鑰管理建議可能因版本而異;請使用您已安裝的 Ubuntu 版本的文件和軟體倉庫發布者的最新說明。

留下評論

如何修正 GPG 錯誤:Ubuntu 中無法驗證以下簽名

如何修正 GPG 錯誤:Ubuntu 中無法驗證以下簽名

安全地修復 Ubuntu APT 簽章錯誤。無需停用軟體包驗證,即可識別 NO_​​PUBKEY、EXPKEYSIG、BADSIG、時脈和軟體來源設定問題。

如何在 SLES 15 上設定 DM-Multipath:實用指南

如何在 SLES 15 上設定 DM-Multipath:實用指南

在 SLES 15 上設定 DM-Multipath,實現安全發現、服務設定、最小 multipath.conf 變更、initramfs 更新和路徑健康檢查。

SLES Btrfs Snapper 更新失敗後回滾:安全復原指南

SLES Btrfs Snapper 更新失敗後回滾:安全復原指南

使用 Btrfs 和 Snapper 在更新失敗後恢復 SLES。比較回滾選項,安全地測試快照,恢復系統,並驗證儲存庫。

如何在 Pardus 用戶端部署自訂桌布和策略

如何在 Pardus 用戶端部署自訂桌布和策略

使用 Liderahenk 和 Ahenk 來設定自訂的 Pardus GNOME 桌布,使用 dconf 鎖定選定的設置,並透過經過測試的試點專案推出其他客戶端策略。

Ubuntu 伺服器啟動進入緊急模式:逐步救援指南

Ubuntu 伺服器啟動進入緊急模式:逐步救援指南

診斷 Ubuntu 伺服器進入緊急模式的原因,安全地修復常見的 /etc/fstab 和掛載問題,檢查檔案系統,並驗證正常重新啟動。

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

排查 Ubuntu 24.04 上忽略 GTK 主題的 Flatpak 應用程式問題。檢查主題擴充、GTK 入口網站、淺色和深色設定以及應用程式工具包限制。

如何設定 Pardus 企業管理軟體(LIDER AHENK)

如何設定 Pardus 企業管理軟體(LIDER AHENK)

在 Pardus 上設定 LIDER AHENK,並採用以品質為中心的設定:驗證先決條件、部署 Lider、註冊 Ahenk 用戶端並驗證管理。

如何在 Pardus 23 工作站上啟用 NVIDIA 驅動程式

如何在 Pardus 23 工作站上啟用 NVIDIA 驅動程式

使用 Pardus NVIDIA 驅動程式安裝程式在 Pardus 23 上啟用 NVIDIA 驅動程式。檢查 GPU 相容性、安全重新啟動、驗證驅動程式並解決常見問題。

Ubuntu Server 24.04 最小化安裝版與標準安裝版:效能基準測試結果究竟如何

Ubuntu Server 24.04 最小化安裝版與標準安裝版:效能基準測試結果究竟如何

使用可重複的基準測試方法,比較 Ubuntu Server 24.04 Minimal 和 Standard 安裝的磁碟使用情況、記憶體、啟動時間、服務和實際工作負載效能。

修復 SUSE Linux Enterprise 中的「Zypper 被另一個進程鎖定」問題

修復 SUSE Linux Enterprise 中的「Zypper 被另一個進程鎖定」問題

安全地解決 SLES 中的 Zypper 鎖定錯誤。識別進程,選擇等待或停止該進程,並區分事務鎖和包鎖。