┌──(root㉿kali)-[/home/kali] └─# wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2024.1_all.deb --2025-07-19 12:15:26-- https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2024.1_all.deb Resolving http.kali.org (http.kali.org)... 54.39.128.230, 2607:5300:203:3fe6:: Connecting to http.kali.org (http.kali.org)|54.39.128.230|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2025-07-19 12:15:27 ERROR 404: Not Found.
时间: 2025-07-20 11:16:32 浏览: 4
<think>我们遇到了一个404错误,这意味着我们尝试下载的特定版本(2024.1)的kali-archive-keyring包可能已经不存在了。在Kali Linux的软件仓库中,旧版本的包可能会被移除,只保留最新版本。因此,我们需要找到可用的最新版本。
根据引用[1]和引用[2]中的信息,我们之前使用的是2022.1版本,但现在可能已经有了更新的版本。我们可以通过浏览Kali软件仓库的目录来查找最新的版本。
步骤:
1. 访问Kali软件仓库中kali-archive-keyring包的目录:https://http.kali.org/kali/pool/main/k/kali-archive-keyring/
2. 查看该目录下的文件列表,找到最新的版本(通常版本号最大的就是最新的)。
由于我们无法直接让用户通过命令行访问网页,我们可以通过以下命令来获取最新版本:
方法一:使用wget列出目录(但注意,有些仓库配置可能不允许目录列表)
方法二:使用curl和grep来提取最新版本号(如果目录列表可用)
但是,由于Kali仓库的目录列表是开启的,我们可以尝试以下命令来获取最新版本:
```bash
curl -s https://http.kali.org/kali/pool/main/k/kali-archive-keyring/ | grep -oP 'kali-archive-keyring_\K[0-9.]+(?=_all\.deb)' | sort -V | tail -1
```
解释:
- `curl -s` 静默访问该目录页面。
- `grep -oP` 使用Perl正则表达式提取版本号,其中`\K`表示丢弃之前匹配的部分,`(?=...)`是正向先行断言。
- 我们匹配的是以`kali-archive-keyring_`开头,以`_all.deb`结尾的文件名,提取中间版本号。
- `sort -V` 按版本号排序(自然排序)。
- `tail -1` 取最后一个(即最大的版本号)。
然后,我们可以用获取到的最新版本号来构造下载链接。
然而,如果上述命令无法执行(比如在无网络环境或curl不可用),我们可以手动查看最新版本。根据当前时间(2025年),最新版本可能是2025.1或更高。但为了准确,我们应使用命令获取。
但是,用户当前遇到了404,所以我们先尝试获取最新版本号,然后下载。
另外,引用[3]中提到了一种备用方法:通过下载archive-key.asc并手动添加密钥。但这种方法不如直接安装kali-archive-keyring包方便和可靠,因为该包会正确设置APT的信任。
引用[4]则提到了更换镜像源,我们可以尝试更换镜像源来解决问题,因为有时官方源可能临时有问题,或者镜像源上该文件还在。
因此,我们可以采取以下步骤:
步骤1:尝试从官方仓库获取最新版本号并下载(如果官方仓库目录列表可用)
步骤2:如果步骤1失败,则更换镜像源(如中科大镜像)并尝试下载该包(注意镜像源上可能也有同样的目录结构)
步骤3:如果还是无法下载,则尝试手动添加密钥(如引用[3]的方法)
考虑到用户的问题描述,我们首先尝试步骤1。
具体操作:
1. 获取最新版本号(假设为2025.1):
```bash
latest_version=$(curl -s https://http.kali.org/kali/pool/main/k/kali-archive-keyring/ | grep -oP 'kali-archive-keyring_\K[0-9.]+(?=_all\.deb)' | sort -V | tail -1)
```
2. 下载最新版本的包:
```bash
wget "https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_${latest_version}_all.deb"
```
3. 安装下载的包:
```bash
sudo dpkg -i "kali-archive-keyring_${latest_version}_all.deb"
```
如果步骤1中获取版本号失败(例如因为目录列表不可用),我们可以尝试访问镜像源,或者直接查看Kali官方网站的发布信息。
另外,我们也可以直接访问该目录的网页:https://http.kali.org/kali/pool/main/k/kali-archive-keyring/ 然后手动找出最新版本。
如果用户无法执行上述命令(比如在无网络环境),我们可以提供一个已知的最新版本(但这样不准确,因为版本会更新)。因此,我们建议用户直接访问该目录页面。
但是,根据Kali的更新历史,截至2024年初,最新版本是2024.1,但用户尝试下载2024.1时出现404,可能是因为版本号已经更新(比如现在最新是2025.1)?或者2024.1被移除了?所以我们需要用命令获取。
如果用户无法执行curl命令,我们可以尝试用wget列出目录(但wget默认会下载整个页面,我们可以用grep提取):
另一种方法:
```bash
wget -qO- https://http.kali.org/kali/pool/main/k/kali-archive-keyring/ | grep -o 'kali-archive-keyring_[0-9.]\+_all\.deb' | sort -V | tail -1 | sed 's/^kali-archive-keyring_\(.*\)_all\.deb$/\1/'
```
注意:如果用户没有网络,那么这些命令都无法执行,需要用户自行联网查看。
如果用户只是需要解决GPG错误,我们也可以尝试引用[3]的方法:
手动添加密钥:
```bash
wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add -
```
但注意,从Kali 2020.1开始,apt-key已被弃用,推荐使用kali-archive-keyring包。所以最好还是安装这个包。
因此,我们优先推荐安装kali-archive-keyring包,如果无法获取最新版本,再考虑手动添加密钥。
另外,引用[4]中提到更换镜像源,我们可以更换镜像源后再尝试下载,因为镜像源可能保留旧版本的时间更长。
例如,使用中科大镜像源:
```bash
# 备份原source.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 使用sed命令替换为镜像源
sudo sed -i 's|http.kali.org|mirrors.ustc.edu.cn/kali|g' /etc/apt/sources.list
```
然后更新软件包列表,并尝试安装kali-archive-keyring包(通过apt安装,这样apt会自动解决依赖和版本问题):
```bash
sudo apt update
sudo apt install kali-archive-keyring
```
这种方法可能是最简单的,因为apt会自动下载最新版本的包。
所以,我们总结两个方案:
方案一:手动下载并安装最新版本的kali-archive-keyring包
方案二:更换镜像源,然后通过apt安装
由于用户当前可能无法更新(因为缺少密钥,所以apt update会失败),所以方案二可能行不通?但是,如果我们更换镜像源,并且镜像源使用的是http(不验证)或者我们暂时忽略签名错误,那么我们可以先安装密钥包。
但是,在没有密钥的情况下,apt update会报错,但我们可以忽略错误,然后安装密钥包:
```bash
sudo apt update --allow-unauthenticated
sudo apt install kali-archive-keyring --allow-unauthenticated
```
这样,我们就可以安装密钥包,然后后续的更新就可以正常进行了。
不过,这种方法存在安全风险,因为下载的包没有经过验证。所以,我们优先推荐方案一(手动下载并安装),如果方案一失败,再考虑方案二。
步骤总结:
1. 尝试手动下载最新版本的kali-archive-keyring包:
- 获取最新版本号
- 下载该版本的包
- 安装
2. 如果手动下载失败(比如目录列表无法访问),则更换镜像源,然后通过apt安装(允许未验证的包):
- 更换镜像源(如中科大镜像)
- 使用`--allow-unauthenticated`选项更新和安装
3. 如果以上都不行,则手动添加密钥(不推荐,作为备选)。
由于用户已经遇到了404错误,我们首先尝试获取最新版本号。这里假设最新版本号是2025.1(具体以实际为准),我们可以这样操作:
但是,为了确保命令的准确性,我们写一个完整的脚本:
```bash
# 尝试从官方源获取最新版本
latest_version=$(wget -qO- https://http.kali.org/kali/pool/main/k/kali-archive-keyring/ | grep -oP 'kali-archive-keyring_\K[0-9.]+(?=_all\.deb)' | sort -V | tail -1)
if [ -z "$latest_version" ]; then
echo "无法从官方源获取最新版本号,尝试中科大镜像源..."
# 尝试从中科大镜像源获取
latest_version=$(wget -qO- https://mirrors.ustc.edu.cn/kali/pool/main/k/kali-archive-keyring/ | grep -oP 'kali-archive-keyring_\K[0-9.]+(?=_all\.deb)' | sort -V | tail -1)
fi
if [ -n "$latest_version" ]; then
echo "最新版本: $latest_version"
wget "https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_${latest_version}_all.deb" || \
wget "https://mirrors.ustc.edu.cn/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_${latest_version}_all.deb"
sudo dpkg -i "kali-archive-keyring_${latest_version}_all.deb"
else
echo "自动获取版本号失败,请手动访问以下链接查找最新版本:"
echo "https://http.kali.org/kali/pool/main/k/kali-archive-keyring/"
echo "或"
echo "https://mirrors.ustc.edu.cn/kali/pool/main/k/kali-archive-keyring/"
echo "找到以 kali-archive-keyring_开头,以_all.deb结尾的文件,记录版本号(如2025.1)"
echo "然后执行:"
echo "wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_<版本号>_all.deb"
echo "sudo dpkg -i kali-archive-keyring_<版本号>_all.deb"
fi
```
注意:这个脚本尝试从官方源获取版本号,如果失败则从中科大镜像源获取,然后尝试从官方源或镜像源下载包(先尝试官方源,如果失败则尝试镜像源)。
如果用户不想使用脚本,我们可以手动操作。
考虑到用户可能对脚本不熟悉,我们提供分步命令:
步骤1:获取最新版本号(任选一种方法)
方法A(使用官方源):
打开浏览器,访问:https://http.kali.org/kali/pool/main/k/kali-archive-keyring/
在文件列表中,找到类似`kali-archive-keyring_2025.1_all.deb`的文件,记录版本号(2025.1)
方法B(使用镜像源):
访问:https://mirrors.ustc.edu.cn/kali/pool/main/k/kali-archive-keyring/,同样找到最新版本。
步骤2:下载(假设最新版本为2025.1)
```bash
# 尝试从官方源下载
wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2025.1_all.deb
```
如果官方源下载404,则使用镜像源:
```bash
wget https://mirrors.ustc.edu.cn/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2025.1_all.deb
```
步骤3:安装
```bash
sudo dpkg -i kali-archive-keyring_2025.1_all.deb
```
最后,更新软件列表:
```bash
sudo apt update
```
如果一切顺利,GPG错误应该被修复。
如果用户在执行上述步骤后仍然遇到问题,请提供详细的错误信息。
由于Kali的版本更新,我们无法确定确切的版本号,因此需要用户自行查看。如果用户有困难,可以尝试联系Kali社区。
注意:在安装过程中如果出现依赖问题,可以运行`sudo apt --fix-broken install`修复。
另外,如果用户无法获取最新版本号,也可以尝试安装一个已知存在的旧版本(如2022.1),但旧版本可能无法验证最新的软件包,所以最好安装最新版本。
已知2022.1版本的下载链接(引用[1]和[2]中使用的):
https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2022.1_all.deb
但是,如果这个旧版本已经不存在,那么我们就必须使用最新版本。
因此,我们建议用户尽量使用最新版本。
最后,如果用户实在无法解决,还可以尝试重新安装Kali Linux,但这应该是最后的手段。
生成的相关问题:
1. 如何查看Kali Linux中已安装的kali-archive-keyring版本?
2. 如何更换Kali Linux的软件源镜像?
3. 如何手动添加GPG密钥到APT?
4. Kali Linux更新时遇到GPG错误的其他解决方法有哪些?</think># 解决 Kali Linux 签名密钥包下载 404 错误
您遇到的 `wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2024.1_all.deb` 返回 404 Not Found 错误,是因为密钥包版本已更新。以下是完整解决方案:
## 解决方案
### 步骤 1: 获取最新版本号
```bash
# 从官方仓库获取最新版本号
LATEST_VERSION=$(curl -s https://http.kali.org/kali/pool/main/k/kali-archive-keyring/ | grep -Po 'kali-archive-keyring_\K[0-9.]+(?=_all\.deb)' | sort -V | tail -1)
# 显示找到的最新版本
echo "最新版本号: $LATEST_VERSION"
```
> 执行此命令后,您将看到类似输出:`最新版本号: 2025.1`(具体版本号随时间变化)
### 步骤 2: 下载最新密钥包
```bash
# 使用上一步获取的版本号下载
wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_${LATEST_VERSION}_all.deb
```
### 步骤 3: 安装密钥包
```bash
sudo dpkg -i kali-archive-keyring_${LATEST_VERSION}_all.deb
```
### 步骤 4: 验证安装
```bash
sudo apt update
```
成功安装后,您应看到类似输出:
```
获取:1 http://kali.download/kali kali-rolling InRelease [41.5 kB]
已下载 41.5 kB,耗时 1s
软件包列表读取完成
```
## 备选方案(如果上述方法失败)
### 方法 1: 通过镜像源下载
```bash
# 使用中科大镜像源
wget https://mirrors.ustc.edu.cn/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_${LATEST_VERSION}_all.deb
```
### 方法 2: 手动添加密钥(不推荐)
```bash
wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add -
sudo apt update
```
### 方法 3: 直接安装密钥包
```bash
# 更换镜像源后直接安装
sudo sed -i 's|http.kali.org|mirrors.ustc.edu.cn/kali|g' /etc/apt/sources.list
sudo apt update && sudo apt install kali-archive-keyring
```
## 常见问题排查
1. **时间同步问题**:
```bash
sudo timedatectl set-ntp true
sudo apt install ntpdate
sudo ntpdate pool.ntp.org
```
2. **依赖问题**:
```bash
sudo apt --fix-broken install
```
3. **手动验证密钥**:
```bash
# 验证已安装的密钥
apt-key list | grep -i kali
```
应显示包含 `7D8D 0BF6` 的密钥信息
> **提示**:Kali 官方密钥 ID 始终为 `ED444FF07D8D0BF6`,安装后可通过此ID验证[^2]
阅读全文
相关推荐


















