So sieht die Meldung aus
W: GPG error: https://repo.example.com/debian stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1A2B3C4D5E6F7A8BHäufige Ursachen
- Der Repo-Schlüssel wurde nie importiert, typisch nach dem Hinzufügen einer neuen Quelle.
- Der Schlüssel ist abgelaufen und der Anbieter hat ihn rotiert.
- Der Keyring liegt nicht am erwarteten Pfad, häufig nach einem Distributionsupgrade.
- Eine alte Quelle zeigt auf ein Repo, das inzwischen anders signiert.
- Die Systemzeit ist falsch, dann gelten gültige Signaturen als abgelaufen.
Prüfen
- Meldung und Key-ID ansehen
apt-get update 2>&1 | grep -B1 -A3 -i 'NO_PUBKEY' - Vorhandene Keyrings
ls -l /etc/apt/keyrings/ /usr/share/keyrings/ 2>/dev/null | head -n 20 - Systemzeit prüfen
date -u; timedatectl status | head -n 5 - Die betroffene Quelle anzeigen
grep -rn . /etc/apt/sources.list.d/ | head
Lösung
- Den Schlüssel beim Anbieter des Repos laden, nicht von einem beliebigen Keyserver:
curl -fsSL URL | gpg --dearmor -o /etc/apt/keyrings/repo.gpg. - Die Quelle auf den Keyring verweisen:
signed-by=/etc/apt/keyrings/repo.gpg. - Bei abgelaufenem Schlüssel prüfen, ob der Anbieter einen neuen veröffentlicht hat, und die Quelle entsprechend anpassen.
--allow-unauthenticatedoder abgeschaltete Signaturprüfung sind keine Dauerlösung, sondern ein Sicherheitsloch.- Nach dem Import
apt-get updateerneut laufen lassen und die Ausgabe vollständig lesen.
Häufige Fragen
Kann ich die Warnung ignorieren?
Nein. Ohne gültige Signatur kann apt manipulierte Pakete installieren. Entweder den Key holen oder die Quelle entfernen.
Warum tritt das nach einem Upgrade auf?
Weil neue Schlüsselpfade und Keyrings verwendet werden und alte Quellen ihren Schlüssel nicht mitbringen.