kali在apt update报错提示没有公钥

提示代码如下:

复制代码
─# apt update
获取:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease [41.5 kB]
错误:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease
  由于没有公钥,无法验证下列签名: NO_PUBKEY ED65462EC8D5E4C5
Warning: GPG 错误:http://mirrors.ustc.edu.cn/kali kali-rolling InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY ED65462EC8D5E4C5
Error: 仓库 "http://mirrors.ustc.edu.cn/kali kali-rolling InRelease" 没有数字签名。
Notice: 无法安全地用该源进行更新,所以默认禁用该源。
Notice: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
Notice: 仓库'Kali Linux'将其'firmware component'值从'non-free'修改到了'non-free-firmware'
Notice: More information about this can be found online at: https://www.kali.org/blog/non-free-firmware-transition/

一、步骤:

  1. 运行:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED65462EC8D5E4C5

  2. 然后再次运行:
    sudo apt update

如果apt-key命令不存在,我们可以使用gpg方法:

sudo gpg --homedir /tmp --no-default-keyring --keyring /etc/apt/trusted.gpg.d/kali-missing-key.gpg --keyserver keyserver.ubuntu.com --recv-keys ED65462EC8D5E4C5

或者更简单的,使用以下方法(将密钥直接添加到/etc/apt/trusted.gpg.d/):

sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg.d/kali-key.gpg --keyserver keyserver.ubuntu.com --recv-keys ED65462EC8D5E4C5

但是,由于apt的更新,现在更推荐使用单独的keyring文件,并且通过sources.list中的signed-by来指定,但这里我们只是临时修复,所以直接添加到信任密钥中。

然而,在Debian 11及更高版本中,推荐的方法是使用keyring文件,并放在/usr/share/keyrings/目录下,然后在源中指定。但这里我们并没有修改源,所以直接添加到系统信任密钥中可能是最简单的。

但是,请注意,Kali基于Debian,所以我们按照Debian的方式处理。

我选择使用apt-key,因为这是当前最快捷的方法。

让我们执行:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys ED65462EC8D5E4C5

如果执行成功,再运行apt update

如果遇到apt-key命令不存在,我们再使用gpg方法。

另外,如果防火墙阻止了hkp端口(11371),我们可以使用hkps://keyserver.ubuntu.com:443(安全连接)或者使用http协议(但通常hkp协议使用80端口,而hkps使用443端口)。

由于公钥服务器可能使用不同的端口,我们可以尝试使用hkp的80端口,或者使用hkps的443端口。

如果上述方法都失败,我们可以尝试从其他途径获取公钥,比如从Kali官方网站下载。

但首先,我们尝试使用keyserver.ubuntu.com来获取。

因此,我们给出以下解决方案:

遇到此错误是因为系统缺少用于验证 Kali 仓库签名的 GPG 公钥(密钥 ID:ED65462EC8D5E4C5)。以下是修复步骤:

解决方案:

下载缺失的公钥

执行以下命令从公钥服务器获取密钥:

bash
sudo gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys ED65462EC8D5E4C5

将公钥转换为 apt 兼容格式

将密钥导出到 apt 的信任密钥目录:

bash
sudo gpg --export --armor ED65462EC8D5E4C5 | sudo tee /etc/apt/trusted.gpg.d/kali-key.asc > /dev/null

更新 apt 缓存

重新运行更新命令验证修复:

bash
sudo apt update

附加说明:

密钥有效性:ED65462EC8D5E4C5 是 Kali Linux 官方签名密钥,确保从可信源(如 keyserver.ubuntu.com)获取。

仓库变更通知:输出中的 Notice 提示 firmware 组件已从 non-free 迁移至 non-free-firmware,这是正常变更,无需操作。

镜像源问题:若步骤 1 因网络问题失败,可尝试:

bash
wget -qO - https://archive.kali.org/archive-key.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kali-key.gpg

验证:

执行 sudo apt update 后,应不再出现 NO_PUBKEY 错误,可正常更新软件包列表。

⚠️ 注意:避免使用已弃用的 apt-key add 命令,推荐上述 gpg 方法以确保兼容性。

相关推荐
M4K02 小时前
Linux百度网盘优化三板斧
linux
好奇的菜鸟3 小时前
如何在 Ubuntu 24.04 (Noble) 上使用阿里源
linux·运维·ubuntu
bcbobo21cn3 小时前
初步了解Linux etc/profile文件
linux·运维·服务器·shell·profile
望获linux3 小时前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件
0wioiw04 小时前
C#基础(项目结构和编译运行)
linux·运维·服务器
2401_873587825 小时前
Linux常见指令以及权限理解
linux·运维·服务器
Arthurmoo5 小时前
Linux系统之MySQL数据库基础
linux·数据库·mysql
李洋-蛟龙腾飞公司5 小时前
HarmonyOS NEXT应用元服务常见列表操作分组吸顶场景
linux·运维·windows
链上Sniper5 小时前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约
晨曦丿6 小时前
双11服务器
linux·服务器·网络