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 方法以确保兼容性。

相关推荐
理智的煎蛋10 小时前
MySQL高可用架构:MHA
linux·数据库·mysql·架构·可用性测试
zz-zjx11 小时前
进程与线程详解, IPC通信与RPC通信对比,Linux前台与后台作业
linux·网络协议·rpc
大筒木老辈子12 小时前
Linux笔记---计算机网络概述
linux·笔记·计算机网络
keep__go13 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
深思慎考13 小时前
LinuxC++项目开发日志——高并发内存池(1-定长内存池)
linux·c++
川石课堂软件测试15 小时前
Oracle 数据库如何查询列
linux·数据库·sql·功能测试·oracle·grafana·prometheus
光电的一只菜鸡16 小时前
ubuntu之坑(十九)——VMware虚拟机扩容磁盘
linux·数据库·ubuntu
岚天start17 小时前
网络计算工具ipcalc详解
linux·运维·网络·网关·广播地址·掩码·ipcalc
deeper_wind17 小时前
Jenkins主机中安装ansible部署lnmp论坛(小白的”升级打怪“成长之路)
linux·ansible·jenkins
格林威17 小时前
Linux使用-Linux系统管理
linux·运维·服务器·深度学习·ubuntu·计算机视觉