如何恢复(或重置)*.debian.org 的 GPG 密钥?

如何恢复(或重置)*.debian.org 的 GPG 密钥?

所以我想我删除或损坏了 *.debian.org 的 gpg 密钥,这使得apt-get update产量

Ign http://ftp.fr.debian.org jessie InRelease
Réception de : 1 http://security.debian.org jessie/updates InRelease [63,1 kB]
Réception de : 2 http://ftp.debian.org jessie-backports InRelease [166 kB]
Réception de : 3 http://ftp.fr.debian.org jessie Release.gpg [2 434 B]
Ign http://security.debian.org jessie/updates InRelease
Réception de : 4 http://ftp.fr.debian.org jessie-updates InRelease [145 kB]
Ign http://security.debian.org jessie/updates/main Sources/DiffIndex
Ign http://ftp.debian.org jessie-backports InRelease
Ign http://security.debian.org jessie/updates/main amd64 Packages/DiffIndex
Err http://ftp.fr.debian.org jessie-updates InRelease

Réception de : 5 http://ftp.debian.org jessie-backports/main amd64 Packages/DiffIndex [27,8 kB]
Atteint http://ftp.fr.debian.org jessie Release
Ign http://ftp.fr.debian.org jessie Release
Réception de : 6 http://ftp.debian.org jessie-backports/contrib amd64 Packages/DiffIndex [25,3 kB]
Ign http://ftp.fr.debian.org jessie/main Sources/DiffIndex
Ign http://ftp.fr.debian.org jessie/main amd64 Packages/DiffIndex
Atteint http://security.debian.org jessie/updates/main Translation-en
Atteint http://security.debian.org jessie/updates/main Sources
Atteint http://security.debian.org jessie/updates/main amd64 Packages
Atteint http://ftp.debian.org jessie-backports/contrib Translation-en
Atteint http://ftp.fr.debian.org jessie/main Translation-fr
Atteint http://ftp.fr.debian.org jessie/main Translation-en
Ign http://security.debian.org jessie/updates/main Translation-fr_FR
Ign http://security.debian.org jessie/updates/main Translation-fr
Atteint http://ftp.debian.org jessie-backports/main Translation-en
Atteint http://ftp.fr.debian.org jessie/main Sources
Atteint http://ftp.fr.debian.org jessie/main amd64 Packages
Ign http://ftp.fr.debian.org jessie/main Translation-fr_FR
Ign http://ftp.debian.org jessie-backports/contrib Translation-fr_FR
Ign http://ftp.debian.org jessie-backports/contrib Translation-fr
Ign http://ftp.debian.org jessie-backports/main Translation-fr_FR
Ign http://ftp.debian.org jessie-backports/main Translation-fr
430 ko réceptionnés en 2s (175 ko/s)
Lecture des listes de paquets…
W: Erreur de GPG : http://security.debian.org jessie/updates InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY (SOME hexadecimals) NO_PUBKEY (SOME hexadecimals)
W: Erreur de GPG : http://ftp.debian.org jessie-backports InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY (SOME hexadecimals) NO_PUBKEY (SOME hexadecimals)
W: Une erreur s'est produite lors du contrôle de la signature. Le dépôt n'est pas mis à jour et les fichiers d'index précédents seront utilisés. Erreur de GPG : http://ftp.fr.debian.org jessie-updates InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY (SOME hexadecimals) NO_PUBKEY (SOME hexadecimals)

W: Erreur de GPG : http://ftp.fr.debian.org jessie Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY (SOME hexadecimals) NO_PUBKEY (SOME hexadecimals) NO_PUBKEY (SOME hexadecimals)
W: Impossible de récupérer http://ftp.fr.debian.org/debian/dists/jessie-updates/InRelease  

W: Le téléchargement de quelques fichiers d'index a échoué, ils ont été ignorés, ou les anciens ont été utilisés à la place.

“Les Signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible”大致翻译为“无法检查以下签名,因为公钥不可用”。

我怎样才能纠正这些错误?

更新:我做到了

# wget http://ftp.fr.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2017.5~deb8u1_all.deb
# dpkg -i debian-archive-keyring_2017.5~deb8u1_all.deb

但一切都没有改变。我怀疑造成整件事的原因是

# curl -s https://www.dotdeb.org/dotdeb.gpg | apt-key remove

删除几分钟前我刚刚添加的 gpg 密钥。

答案1

由于您已经重新安装了该debian-archive-keyring软件包,因此实际的密钥文件现在应该就位。但重新安装未能将密钥重新添加为受信任,可能是因为postinst软件包中的脚本中的某些条件似乎与从 Debian squeeze 到 jessie 的迁移有关。

您可能需要执行此操作(或非常类似的操作):

# cd /etc/apt/trusted.gpg.d
# for i in *.gpg ; do apt-key add $i; done

如果实际的密钥仍然丢失,则暴力方法是手动提取包:

mkdir /tmp/workdir
cd /tmp/workdir
ar x /some/where/debian-archive-keyring_2017.5~deb8u1_all.deb
tar xvf data.tar.xz

现在您肯定应该在目录中拥有关键文件/tmp/workdir/etc/apt/trusted.gpg.d/。将它们复制到位,然后使用apt-key add上面建议的命令。

答案2

下载debian-archive-keyring(这链接到 Jessie 版本),然后手动安装(以 root 身份):

dpkg -i debian-archive-keyring_2017.5~deb8u1_all.deb

这将恢复密钥/etc/apt/trusted.gpg.d,您应该能够apt再次运行。

相关内容