apt.conf中SOCKS代理的语法


23

我想将SOCKS代理设置添加到/etc/apt/apt.conf。它的语法是什么?它与http和ftp语法相同吗?

谢谢。

Answers:


31

可能的解决方案是使用tsocks,该应用程序可以通过袜子代理重定向网络流量。安装tsocks软件包,修改/etc/tsocks.conf以设置袜子代理的地址和端口号,然后运行:

$ sudo -s
# tsocks apt-get update
# tsocks apt-get dist-upgrade
# exit
$

要么

$ sudo -s
# . tsocks -on
# apt-get update
# apt-get dist-upgrade
# . tsocks -off # not really necessary, given the exit
# exit
$

您可以考虑多种选择,以简化和自动化其使用。
不要忘了前导点,联机帮助页对此有更多详细描述。

编辑:一种较短的使用方式:

$ sudo tsocks apt-get update
$ sudo tsocks apt-get dist-upgrade

11
看来tsocks默认未安装,所以我需要运行sudo tsocks apt-get install tsocks。哈哈哈哈哈哈...
fikr4n 2016年

1
您可以使用curl下载tsocks,安装并使用:)
neutrinus

3
另外:从apt 1.3〜rc1(Debian版本,不确定确切的Ubuntu版本,虽然我猜直到Zesty才知道),您可以使用Acquire::http::Proxy "socks5h://hostname:port/"。会在Changelog anonscm.debian.org/gitweb/?p=apt/apt.git;a=blob;f=debian/...
derobert

1
好吧...真有趣。要开始工作,您需要... apt-get something
Equidamoid '17年

2
对@derobert行进行一些更正:达到目的Acquire::socks::Proxy "socks5h://hostname:port/";。HTTP都没有 -与Tor的尝试它,你会看到一个标准的回应“Tor是不是一个HTTP代理”,所以http推移取代socks-和它的作品!
阿列克谢·维斯宁

17
Acquire::http::proxy "socks5h://server:port";

这对我在Ubuntu 18.04上有效。正如手册页所述,apt支持socks5h而不是socks5,这意味着具有DNS解析功能的socks5代理。


1
这是正确的,确实似乎可以在Ubuntu 18.04上使用。尽管可能还希望包含Acquire :: https :: proxyAcquire :: ftp :: proxy(具有相同的值)。
哈米

1
将代理规则添加Acquire::https::proxy "socks5h://server:port";apt.conf.d文件(如/etc/apt/apt.conf.d/12proxy)中就可以了。我建议除非另有必要,否则请坚持使用https
codegenki

同样对于需要身份验证的代理服务器,此行也被修改为Acquire::http::proxy "socks5h://user:pass@server:port";。上面的规则在Ubuntu 18.04中很好用。此处socks5h在代理服务器上强制执行DNS解析。
codegenki

有人知道这是否可以在Ubuntu 16.04中使用吗?
becko

不适用于14.04
razieh baabaee,

8

使用下一条配置行对我有用:

Acquire::socks::proxy "socks5://server:port";

为了保持apt.conf整洁并避免在Linux升级时出现问题,我创建了一个新文件(/etc/apt/apt.conf.d/12proxy)并向其中添加了配置文件。


foler中的起始数字是什么意思
Kris Roofe 16/12/29

这只是脚本的执行顺序
Bit-Man

错了 这行不通。
dedunumax

@dedunumax失败了什么?有错吗 有什么线索吗?
比特人

1
应该是Acquire :: http :: proxy,还有socks5 h以便在代理端进行DNS解析
ZAB

4

我在Ubuntu Xenial的apt.conf手册中的Acquire :: socks :: proxy上找不到任何内容。您可以通过运行支持上游袜子代理的本地http代理(例如Polipo)来解决此问题。您需要按以下方式配置Polipo:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "sockshost:socksport"
socksProxyType = socks5

然后在apt.conf文件中设置http代理:

Acquire::http::proxy "http://127.0.0.1:8118/";
Acquire::https::proxy "https://127.0.0.1:8118/";

3

或者tou可以在您的/etc/apt/apt.conf文件中放入如下内容:

Acquire::socks::proxy "socks://user:pass@host:port/";

2
这似乎在Ubuntu 12.04中
不起作用

适用于13.10。
isaaclw 2014年

4
我敢肯定这是错误的语法,它的意思是“将所有以socks://开头的URL代理到socks:// user:pass @ host:port /。” 确实应该是这样的:Acquire::http::proxy "socks://user:pass@host:port/";
Hans-Christoph Steiner 2014年

@ Hans-ChristophSteiner:这与指定的主机和端口建立了连接,但是该连接未使用socks协议。它看起来像一个HTTP代理协议,但是我没有检查实际的HTTP代理。
塞斯·罗伯逊

目前,我确定这Acquire::socks是为以开头的URL设置代理socks://。因此,这意味着您不需要代理即可访问互联网,并且apt不对,或.. 使用任何代理ftp://,仅支持HTTP代理,即。http://https://aptAcquire::http::proxy "http://localhost:8118
Hans-Christoph Steiner

0

在Debian中,您可以阅读手册页apt-transport-http(1)并查找受支持的URI方案。正如之前回答的那样

Acquire::http::proxy "socks5h://server:port";

/etc/apt/apt.conf.d/12proxy

您可以从总体上阅读有关APT-config的更多信息,apt.conf(5)并阅读/usr/share/doc/apt/examples/configure-index.gz联机帮助页末尾提到的示例。

可以将其与ssh -D <LOCAL PORT> <USER>@<HOST>创建到不同系统的SOCKS代理结合使用,以便apt可以像使用所有原始内容一样使用该代理<HOST>

如果使用ssh -D 0.0.0.0:<LOCAL PORT> <USER>@<HOST>ssh -D [::]:<LOCAL PORT> <USER>@<HOST>(对于IPv6)启用其他系统以在所有接口上使用SOCKS代理。这可能是安全风险或违反(公司)政策。确保您知道自己在做什么。

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.