问题描述
我访问的所有key-servers都超时了。我需要安装包而不检查公钥的签名。有没有办法绕过所有签名检查/忽略所有签名错误或傻瓜认为签名传递?
我很清楚这样做很危险
最佳解决方案
将--allow-unauthenticated
选项传递给apt-get
,如下所示:
sudo apt-get --allow-unauthenticated upgrade
从apt-get
的手册页:
–allow-unauthenticated
Ignore if packages can’t be authenticated and don’t prompt about it. This is useful for tools like pbuilder. Configuration Item: APT::Get::AllowUnauthenticated.
您可以在/etc/apt/apt.conf.d/
目录中使用自己的配置文件使此设置永久化。文件名可以是99myown
,它可能包含以下行:
APT::Get::AllowUnauthenticated "true";
这样,每次要安装软件时都不需要使用该选项。注意:我不建议默认设置此选项,它会绕过可能允许攻击者危害您的计算机的签名检查。
次佳解决方案
也许您可以尝试创建文件/etc/apt/apt.conf(如果您创建它将会读取)并插入此代码:
APT{Ignore {"gpg-pubkey"; }};
第三种解决方案
如果你试图从存储库中获取一个包,它们打包密钥并将它们包含在存储库中而不包含在其他地方,使用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 repo中这样做了,但后来我发现他们的密钥在keyserver.ubuntu.com列表中,所以我可以只用sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6
并避免所有额外的包麻烦。