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

相关推荐
zzzsde10 分钟前
【Linux】权限(2):文件权限的深入理解&&粘滞位
linux·运维·服务器
序属秋秋秋32 分钟前
《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
linux·运维·服务器·c语言·c++·ubuntu·系统编程
刘某的Cloud3 小时前
ceph osd down排查
linux·运维·ceph·系统·osd
安审若无8 小时前
图数据库neoj4安装部署使用
linux·运维·数据库
做运维的阿瑞9 小时前
CentOS DNS故障排查完整解决方案:从症状到根因的系统化诊断
linux·运维·centos
QT 小鲜肉9 小时前
【个人成长笔记】在 Linux 系统下撰写老化测试脚本以实现自动压测效果(亲测有效)
linux·开发语言·笔记·单片机·压力测试
itachi-uchiha10 小时前
head和tail命令使用
linux·运维·服务器
馨谙10 小时前
SELinux 故障排除完全指南:从拒绝访问到快速修复
linux
凤凰战士芭比Q10 小时前
LNMP环境部署 KodBox私有云盘
linux·架构
南棱笑笑生11 小时前
20251106给荣品RD-RK3588-MID开发板跑Rockchip的原厂Android13系统时禁止锁屏+永不休眠
linux·运维·服务器·rockchip