Aktualizace apt selhává s NO_PUBKEY po přidání úložiště VPN
NO_PUBKEY a chybějící soubor Release jsou selhání důvěry, ne síťové závady. Rozhodněte se, zda klíč dodavatele připnete přes signed-by, nebo zdroj odstraníte.
Zdroj apt od vašeho dodavatele VPN rozbil správce balíčků a oprava je rozhodnutí, ne příkaz. NO_PUBKEY, nebo stížnost, že úložiště nemá soubor Release, znamená, že apt odmítl tomu zdroji důvěřovat, takže každá další operace s balíčky dál tiskne stejné varování. Tunel sám je pravděpodobně nevinný. Odpovězte na tři otázky, zda ten zdroj ještě chcete, a správná oprava přijde téměř mechanicky.
Nejprve zařaďte selhání do správné kategorie
Selhání důvěry pojmenuje soubor zdroje a buď chybějící klíč, nebo chybějící soubor Release. Selhání přenosu vypadá jinak: chyby certifikátu TLS, odmítnuté spojení, vypršení časového limitu nebo proxy, která odmítá CONNECT. Tento rozdíl rozhoduje, který článek čtete, protože VPN, která zachytává TLS nebo blokuje hostitele dodavatele, vytváří chyby přenosu, ne chyby podpisu.
Spusťte sudo apt update samostatně a přečtěte konec, přičemž řádky z mezipaměti výše ignorujte. Řádek, na kterém záleží, uvádí /etc/apt/sources.list.d/ a říká vám, který soubor otevřít.
Pokud selhání následuje po vztyčení tunelu, otestujte s vypnutým tunelem a s DNS rozkládaným systémovým resolverem. Zdroj, který funguje bez VPN, je otázka směrování nebo zachytávání a žádné hospodaření s klíči to nespraví.
Tři otázky, které vyberou cestu
Instalujete nebo aktualizujete z tohoto zdroje balíčky i nadále? Pokud je klient aktivně používán, opravte důvěru. Pokud jste klienta nainstalovali jednou a nyní do NetworkManageru importujete obyčejný profil, je zdroj mrtvá váha a odstranění je poctivá oprava.
Za druhé, zveřejňuje dodavatel klíč a otisk, které můžete ověřit mimo pásmo? Za třetí, kdo na tomto hostiteli spravuje klíče: distribuce, nebo vy? Zdroj podepsaný klíčem, který nemůžete ověřit, je oprávnění k aktualizacím, které byste neměli udělit.
Odpověď ne na první otázku analýzu ukončí. Odpověď ano na všechny tři body ukazuje na opravu přes signed-by, což je jediné uspořádání, které zároveň funguje a zůstává auditovatelné. Míchat obě cesty, tedy zdroj ponechat a protlačit ho silou, je jediná možnost, kterou stojí za to výslovně vyloučit.
Proč trusted=yes vypadá jako oprava a není
Stránka manuálu k sources.list je o tom přímá. Nastavení volby Trusted na yes říká aptu, aby zdroj přijal, i když neprojde autentizací, což vypne apt-secure pro toto úložiště. Stránka to vyhrazuje pro místní kontext, pokud se vůbec používá.
To není užší verze důvěry v dodavatele. Odstraňuje otázku, kdo index podepsal, takže kdokoli, kdo umí odpovědět za toto jméno hostitele, může vašemu stroji předat balíčky, které se nainstalují jako root.
Cesta opravy: získejte klíč a pak ho připněte
Získejte klíč z místa, které dodavatel dokumentuje, a rozbalte ho do klíčenky spravované správcem, poté nasměrujte řádek úložiště na tento soubor, aby důvěra nemohla odplout.
- Přečtěte selhávající řádek, abyste získali ID klíče a název souboru zdroje.
- Stáhněte dodavatelův klíč obalený ASCII a spusťte
gpg --dearmordo/etc/apt/keyrings/vendor-name.gpg. - Přidejte
[signed-by=/etc/apt/keyrings/vendor-name.gpg]k záznamu v souboru.listtohoto dodavatele. - Spusťte
sudo apt updatea potvrďte, že zdroj stahuje index, místo aby opakoval varování o podpisu.
Upřednostněte /usr/share/keyrings pro klíče, které přicházejí s balíčkem, a /etc/apt/keyrings pro klíče, které umísťujete ručně. Rozdělení není kosmetické: říká dalšímu správci, které klíče přežijí aktualizaci balíčku a které potřebují člověka.
Ověřte otisk proti zveřejněné hodnotě dodavatele, než mu uvěříte. ID klíče vložené z příspěvku na fóru je způsob, jak stroj začne důvěřovat oprávnění k aktualizacím, které nikdo nedokáže pojmenovat.
Cesta odstranění a proč se chyba může vrátit
Podívejte se, co instalátor skutečně zapsal, protože několik souborů může zmiňovat stejného dodavatele a jeden z nich je obvykle zbylá kopie.
grep -r . /etc/apt/sources.list.d/
sudo rm /etc/apt/sources.list.d/vendor.listapt čte z tohoto adresáře jen soubory .list a .sources, takže kopie .save nebo .distUpgrade se už ignoruje; smazat ji i tak zabrání pozdějšímu čtenáři, aby ji omylem obnovil. Odstranění zdroje nic neodinstaluje a apt pak může nainstalovaný balíček VPN popsat jako místně nainstalovaný nebo už nedostupný, což je zpráva o stavu balíčku, ne návrat chyby důvěry.
Opakujícím se případem jsou starší návody, které instalovaly klíče pomocí apt-key do globálního prstence důvěry. Tato cesta je zastaralá a aktualizace vydání může klíč nechat vypadnutý nebo prostě nekonzultovaný, a právě proto se chyba, která byla rok tichá, objeví v týdnu, kdy aktualizujete. Zkontrolujte /etc/apt/trusted.gpg.d/, poté přesuňte rozhodnutí o důvěře do řádku úložiště, kam patří. Pokud dodavatel stále tiskne pokyny k apt-key, použijte signed-by i tak; je to uspořádání, které manuál dokumentuje, a to, které přežije aktualizaci.