Debian更新源时出现签名无法进行验证
问题
有些时候在添加软件源,更新软件源后,会提示所添加的软件源公钥无法验证,造成更新失败。
比如添加deb https://www.deb-multimedia.org bullseye main non-free源,如果不用命令1
sudo apt install deb-multimedia-keyring
安装密钥,那么更新源后会提示:1
2
3W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:https://www.deb-multimedia.org bullseye InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 5C808C2B65558117
W: 无法下载 https://www.deb-multimedia.org/dists/bullseye/InRelease 由于没有公钥,无法验证下列签名: NO_PUBKEY 5C808C2B65558117
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
解决方法
[推荐方法]1
2
3
4
5
6
7
8
9
10# 从 keyring.debian.org 下载公钥,导入密钥
curl -s https://www.deb-multimedia.org | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/deb-multimedia.gpg --import
sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/deb-multimedia.gpg --keyserver keyring.debian.org --recv 5C808C2B65558117
# 输出
gpg: 密钥 5C808C2B65558117:公钥 “Christian Marillat <marillat@debian.org>” 已导入
gpg: 处理的总数:1
gpg: 已导入:1
# 确保运行以下命令以设置正确的文件权限
sudo chmod 644 /etc/apt/trusted.gpg.d/deb-multimedia.gpg
# 其中`5C808C2B65558117`为更新源后提示无法验证的公钥字符。
采用以下即将弃用的方法会提示警告。1
2
3
4
5
6
7
8
9
10
11
12
13
14sudo gpg --keyserver keyring.debian.org --recv-keys 5C808C2B65558117
gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 5C808C2B65558117:公钥 “Christian Marillat <marillat@debian.org>” 已导入
gpg: 处理的总数:1
gpg: 已导入:1
# 切换到`root`用户,把下载的key添加到本地trusted数据库中。
# 输出65558117用户的公钥,armor参数可以将其转换为ASCII码显示
su
密码:
sudo gpg --armor --export 65558117 | apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
# 其中 65558117 为更新源后提示无法验证的公钥后八位字符。
附:如果您已经知道所需公钥的 URL,请使用 wget 或 curl 下载并导入它。请记住将文件权限从 600 更新到 644。1
2curl -s https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/earth.gpg --import
sudo chmod 644 /etc/apt/trusted.gpg.d/earth.gpg
查询已安装的key1
2
3gpg --list-keys --keyring /etc/apt/trusted.gpg.d/deb-multimedia.gpg
# 或者
apt-key list
删除安装的key1
2
3
4sudo apt-key del 65558117
# 或者
cd /etc/apt/trusted.gpg.d/
sudo rm deb-multimedia.gpg
更新
再更新安装源就不会出现错误了。1
sudo apt update && sudo apt upgrade
参考资料
1、2021年-用更现代的方法使用PGP-下
2、警告:apt 键已弃用