如何绕过/忽略apt的gpg签名检查?


47

我访问的所有关键服务器都在超时。我需要安装软件包而不检查公钥的签名。有没有一种方法可以绕过所有签名检查/忽略所有签名错误,或者愚蠢地认为签名已通过?

我非常清楚这样做很危险


1
通常,您将在添加存储库的同时在本地安装密钥,那么为什么需要访问密钥服务器?
2011年

Answers:


68

--allow-unauthenticated选项传递给,apt-get如:

sudo apt-get --allow-unauthenticated upgrade

从以下页面的手册中apt-get

--allow-unauthenticated
忽略是否​​无法对软件包进行身份验证,并且不提示输入。这对于pbuilder之类的工具很有用。配置项:APT :: Get :: Allow未经身份验证。

您可以通过在/etc/apt/apt.conf.d/dir中使用自己的配置文件使此设置永久化。文件名可以是99myown,并且可以包含以下行:

APT::Get::AllowUnauthenticated "true";

这样,您不需要每次都要安装软件时使用该选件。注意:我不建议默认情况下设置此选项,因为它会绕过签名检查,该检查可能会使对手破坏您的计算机。


4
有关信息:该命令适用apt-get于平原apt命令,但不适用于该命令。
Tor Klingberg

2
Ubuntu 16.0 LTS。这不起作用/有什么效果为零
wvxvw

7

如果您试图从存储库中获取软件包,在存储库中密钥被打包并包含在存储库中,而没有其他地方,那么使用dpkg下载和安装密钥/密钥库软件包可能会很烦人,而且这样做非常困难。以易于编写脚本和重复的方式。

如果可以从密钥服务器安装密钥或通过https从受信任的源下载密钥,则不建议使用以下脚本,但是如果没有其他方法,则可以使用此脚本。

echo "deb http://your.repo.domain/repository/ $(lsb_release -c -s) universe" | sudo tee /etc/apt/sources.list.d/your-repo-name.list

sudo apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update

## if the 'apt update' above fails it is likely due to previously
## having the GPG key and repository on the system, you can clean
## out the old lists with `sudo rm /var/lib/apt/lists/your.repo.domain*`

apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname

## If you ever run `sudo apt-key del your-repos-keyID`
## you may have to `sudo apt remove --purge repo-keyring-pkgname`
## Update should run without the GPG warnings now that the key is installed

apt-get update
apt-get install somepkg-from-repo

我最初把它们放在一起是因为i3在他们的sur5r存储库中是这样做的,但是后来我发现它们的密钥在keyserver.ubuntu.com列表中,因此我sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6可以避免所有额外的软件包麻烦。


由于i3问题来到这里- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6解决了!非常感谢!
BenediktKöppel18年

6

也许您可以尝试创建文件/etc/apt/apt.conf(如果创建,它将被读取)并插入以下代码:

APT{Ignore {"gpg-pubkey"; }};

5
它对我不起作用。但是当我添加时可以使用APT { Get { AllowUnauthenticated "1"; }; };
php-coder

ubuntu 16.0 LTS:对apt-get所做的任何操作均无效。
wvxvw

1

/etc/apt/apt.conf.d/99allow_unauth使用以下内容创建:

APT { Get { AllowUnauthenticated "1"; }; };

感谢php-coder注释


0

我在旧的debian服务器上遇到了同样的问题。我无法通过事件

apt-get update

这给了我以下错误:

E: Release file expired, ignoring http://archive.debian.org/debian/dists/squeeze-lts/Release (invalid since 1183d 0h 2min 51s)

最后,解决方案是添加以下内容:

Acquire::Check-Valid-Until false;

到/etc/apt/apt.conf(如果不存在,则创建它)。此后,错误变成简单的警告。

我猜它也可以在ubuntu上工作。

请注意,这是完全不安全的。


如果那是不安全的,那么我建议您根本不要发布它。
Yufenyuy Veyeh Dider

执行此操作的安全方法是升级发行版。在某些复杂的客户案例中,您无法升级。由于整个问题都始于以下免责声明:“我非常清楚这样做很危险”,我认为自己的贡献是适当的。如果没有,我可以将其删除。
努沙姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.