透過修復儲存庫金鑰來修復 APT 簽章錯誤

如果 APT 報告“以下簽名無法驗證”,請在相同輸出中識別儲存庫和特定的錯誤代碼,然後修復該儲存庫的受信任簽署金鑰或來源條目。對於第三方儲存庫,請從軟體發布者取得其目前金鑰,並將其綁定至該來源Signed-By;切勿停用簽章檢查或全域新增未知金鑰。

Ubuntu 終端輸出顯示 apt update 指令提示缺少公鑰,錯誤訊息指向佔位符 packages.example.org 倉庫。
apt update 輸出範例:缺少金鑰錯誤會指定受影響的儲存庫,並包含 NO_PUBKEY 識別碼。

1. 找到錯誤代碼庫並閱讀特定的錯誤訊息。

執行更新程式以便查看完整訊息:

sudo apt update

尋找 URL 旁的Err:標記,例如NO_PUBKEY`<source>`、EXPKEYSIG` KEYEXPIRED<repository>`、`<repository>` 或 `<repository> BADSIG`。 URL 會告訴您哪個來源失敗了;標記可以縮小失敗原因的範圍。 APT 會在信任軟體包索引之前驗證已簽署的儲存庫元數據,因此簽章檢查失敗是一個安全訊號,而不僅僅是一個表面警告。 Ubuntu 安裝已經包含了預設 Ubuntu 歸檔檔案的金鑰;通常只有後來新增的儲存庫才需要手動設定金鑰。

透過搜尋錯誤訊息中指定的主機名稱來尋找來源定義。將範例主機名稱替換為您終端機中顯示的主機名稱:

Ubuntu 終端機在 etc 目錄下使用 apt sources.list.d 指令尋找軟體倉庫主機。
在 APT 來源目錄中搜尋更新失敗所報告的確切主機。
grep -R "packages.example.org" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

Ubuntu 24.04 及更高版本.sources預設使用以 .deb822 結尾的來源檔案;較舊的版本通常使用單行.list檔案。請檢查軟體倉庫 URL、套件或 Ubuntu 代號,以及任何已存在的Signed-By條目。如果來源檔案所指向的版本已不再受廠商支持,請按照廠商針對您的 Ubuntu 版本提供的說明進行操作,或停用該來源檔案。密鑰無法修復過時或錯誤的軟體倉庫路徑。

2. 修復遺失或旋轉的第三方鑰匙

首先NO_PUBKEY,請確認該儲存庫是您有意安裝的。開啟發布者的最新安裝文檔,從中取得簽署金鑰 URL 和完整指紋。如有供應商提供的參考訊息,請將該指紋與單獨發布的參考資訊進行比較。切勿僅僅因為某個金鑰伺服器的短 ID 與錯誤訊息匹配就從該伺服器取得金鑰。

對於發布 ASCII 加密金.asc鑰的供應商,請將其安裝為專用 APT 金鑰環。將範例 URL 替換為該供應商提供的確切 URL:

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://vendor.example/path/repo-signing-key.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/vendor-archive.gpg
sudo chmod 0644 /etc/apt/keyrings/vendor-archive.gpg

該.gpg文件必須對 APT 的非特權下載使用者可讀。如果發布者提供了二進位.gpg密鑰環,請按照其說明操作,不要再次重置它。 Ubuntu 建議將第三方金鑰放在單獨的金鑰環中,並由該軟體倉庫引用,從而限制可以使用該金鑰的來源。

Ubuntu 終端機顯示了一個專用的 APT 金鑰環和一個使用 signed-by 簽署的軟體來源條目。
特定於來源的 Signed-By 設定可使儲存庫與其自己的金鑰環綁定。

編輯現有來源定義,而不是新增重複條目。對於類似 deb822 檔案的情況/etc/apt/sources.list.d/vendor.sources,請使用供應商實際的 URI、套件和元件值,然後新增金鑰環路徑:

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

如果現有條目位於單行.list檔案中,則等效語法為 ` deb [signed-by=/etc/apt/keyrings/vendor-archive.gpg] https://packages.example.org/ubuntu YOUR_UBUNTU_CODENAME main.`。請保留儲存庫文件中記錄的套件和元件;範例值僅為佔位符。避免使用 `.` apt-key add:它已被棄用,且全域受信任金鑰可能會授予第三方金鑰超出預期的權限。

如果訊息顯示“已過期EXPKEYSIG”或KEYEXPIRED“已更換”,則表示簽章金鑰可能已過期或供應商已輪替金鑰。請按照供應商的最新說明下載並驗證替換金鑰,然後更新來源金鑰環。切勿忽略過期資訊而延長舊密鑰的信任期限。

3. 檢查時鐘、Ubuntu 歸檔和鏡像問題

如果軟體來源是官方 Ubuntu 歸檔,請勿匯入第三方金鑰。使用 `sudo config` 指令檢查系統時鐘是否正確timedatectl status,並確認來源使用的 URL 和已安裝版本的代號是否有效。ubuntu-keyring軟體包提供 Ubuntu 歸檔簽章金鑰;如果軟體包管理仍可透過受信任的 Ubuntu 來源正常運作,請使用以下命令刷新軟體包:

sudo apt install --reinstall ubuntu-keyring

此BADSIG訊息表示簽章與 APT 收到的元資料不符。重複導入密鑰通常是錯誤的。請檢查系統時鐘是否有錯誤、鏡像是否過期或不一致、快取代理是否正常運作,或倉庫端的發布是否有問題;修正問題後再重試。如果只有第三方來源發生故障且您不需要它,請在聯絡其維護者期間停用其特定.sources條目.list。請保持安全驗證啟用狀態。

4. 驗證修復效果

Ubuntu 終端機正在執行 apt update 指令,已取得軟體來源元資料並完成軟體套件清單更新。
更正來源或金鑰環後,重新執行 apt update 並確認不再存在簽章錯誤。

再次運行sudo apt update。當受影響的儲存庫在取得過程中不再出現簽章警告,且 APT 達到指定狀態時,修正即完成Reading package lists... Done。更新成功並不代表第三方發布者安全,而是確認元資料簽章與您選擇信任的金鑰相符。如果驗證仍然失敗,請在進行任何變更之前,請重新檢查儲存庫 URL、代號、金鑰指紋、金鑰環權限以及確切的錯誤令牌。

有關支援的來源和金鑰格式,請參閱Ubuntu 的第三方儲存庫指南、Ubuntu apt-secure 手冊和Ubuntu 歸檔完整性文件。

留下評論

透過修復儲存庫金鑰來修復 APT 簽章錯誤

透過修復儲存庫金鑰來修復 APT 簽章錯誤

透過識別失敗的來源、刷新其已驗證的金鑰並檢查結果,安全地解決 Ubuntu APT 簽章警告,而無需停用安全性。

如何轉換三相電壓、電流、千瓦 (kW)、千伏安 (kVA) 和功率因數

如何轉換三相電壓、電流、千瓦 (kW)、千伏安 (kVA) 和功率因數

學習平衡三相公式,並逐步轉換線電壓、電流、kW、kVA 和功率因數,並提供範例和檢查極限。

使用 Ubuntu cgroups 限制指令的 CPU 和記憶體使用量

使用 Ubuntu cgroups 限制指令的 CPU 和記憶體使用量

在 systemd 範圍內運行工作負載,並設定 CPUQuota 和 MemoryMax,然後透過 cgroup v2 驗證限制。

在 Ubuntu Server 24.04 上加密 Pi-hole 上游 DNS

在 Ubuntu Server 24.04 上加密 Pi-hole 上游 DNS

在 Ubuntu 24.04 上將 dnscrypt-proxy 設定為 Pi-hole 的本地 DoH 橋,設定僅限 localhost 的監聽器、解析器選擇以及切換 DNS 前的檢查。

讓 Ubuntu 24.04 在 Wayland 上啟用觸控板手勢

讓 Ubuntu 24.04 在 Wayland 上啟用觸控板手勢

在排查應用程式或硬體故障之前,請檢查 Ubuntu 的觸控板設定、確認 Wayland 以及測試 GNOME 的內建滑動功能。

使用 mdadm 建置 Debian 12 RAID 1 鏡像

使用 mdadm 建置 Debian 12 RAID 1 鏡像

建立並驗證一個雙磁碟 Debian 12 RAID 1 資料陣列,安全地格式化它,並配置它在重新啟動後組裝和掛載。

每次啟動時使用新金鑰加密 Debian 12 交換分割區。

每次啟動時使用新金鑰加密 Debian 12 交換分割區。

為現有的 Debian 12 交換分區設定隨機金鑰加密,驗證活動的 dm-crypt 映射,並了解休眠的權衡。

如何在 Ubuntu 24.04 上限制 SSH 使用者只能存取特定目錄(SFTP Chroot 指南)

如何在 Ubuntu 24.04 上限制 SSH 使用者只能存取特定目錄(SFTP Chroot 指南)

使用 chroot、適當的權限、匹配規則和安全測試,將 Ubuntu 24.04 SSH 帳戶限製到指定的 SFTP 資料夾,而不授予 shell 存取權限。

安全釋放 Ubuntu 的 APT 鎖定並完成更新

安全釋放 Ubuntu 的 APT 鎖定並完成更新

找到擁有 Ubuntu dpkg 前端鎖定的進程,讓軟體包工作完成,並在不刪除鎖定檔案的情況下修復中斷的安裝。

如何在 Ubuntu 桌面系統上設定 Btrfs 自動快照

如何在 Ubuntu 桌面系統上設定 Btrfs 自動快照

使用 Timeshift 在 Ubuntu Desktop 上設定定時 Btrfs 系統快照,驗證 Ubuntu 子磁碟區佈局,選擇保留策略,並了解快照無法保護的內容。