apt.conf 中 SOCKS 代理的语法

Ubu*_*ser 32 apt proxy

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

谢谢。

enz*_*tib 35

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

$ sudo -s
# tsocks apt-get update
# tsocks apt-get dist-upgrade
# exit
$
Run Code Online (Sandbox Code Playgroud)

或者

$ sudo -s
# . tsocks -on
# apt-get update
# apt-get dist-upgrade
# . tsocks -off # not really necessary, given the exit
# exit
$
Run Code Online (Sandbox Code Playgroud)

您可以考虑多种选择,以简化和自动化其使用。
不要忘记前导点,手册对此有更多详细信息。

编辑:一种更短的使用方法:

$ sudo tsocks apt-get update
$ sudo tsocks apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

  • 似乎默认情况下没有安装 tsocks,所以我需要运行 `sudo tsocks apt-get install tsocks`。哈哈哈哈哈哈... (11认同)
  • 另外:从 apt 1.3~rc1(Debian 版本,不确定到底是哪个 Ubuntu 版本,虽然我的猜测是直到 Zesty),你可以使用`Acquire::http::Proxy "socks5h://hostname:port/"` . 请参阅 https://anonscm.debian.org/gitweb/?p=apt/apt.git;a=blob;f=debian/changelog;hb=f5e9be1da89725f9bf1915bdf86fdc4a77edf917 上的变更日志 (3认同)
  • 您可以使用curl下载`tsocks`,安装它然后使用:) (2认同)
  • 对@derobert 行的一些更正:`Acquire::socks::Proxy "socks5h://hostname:port/";` 可以解决问题。Http **不** - 用 Tor 试试,你会看到一个标准的响应“Tor 不是一个 http 代理”,所以 `http` 被 `socks` 取代 - 它可以工作! (2认同)

小智 35

Acquire::http::proxy "socks5h://server:port";
Run Code Online (Sandbox Code Playgroud)

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

  • 将代理规则 `Acquire::https::proxy "socks5h://server:port";` 添加到 `apt.conf.d` 文件(如 `/etc/apt/apt.conf.d/12proxy`)有效正好。除非有必要,否则我建议坚持使用 **https**。 (4认同)
  • 这是正确的,确实似乎适用于 Ubuntu 18.04。尽管人们可能还想包括 _Acquire::https::proxy_ 和 _Acquire::ftp::proxy_(具有相同的值)。 (2认同)
  • 同样对于需要身份验证的代理服务器,此行修改为`Acquire::http::proxy "socks5h://user:pass@server:port";`。上述规则在 Ubuntu 18.04 中运行良好。这里`socks5h` 在代理服务器上强制执行DNS 解析。 (2认同)

小智 10

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

Acquire::socks::proxy "socks5://server:port";
Run Code Online (Sandbox Code Playgroud)

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

  • 对于代理端的 dns 解析,它应该是 Acquire::http::proxy 和 socks5**h** (3认同)

小智 6

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

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "sockshost:socksport"
socksProxyType = socks5
Run Code Online (Sandbox Code Playgroud)

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

Acquire::http::proxy "http://127.0.0.1:8118/";
Acquire::https::proxy "https://127.0.0.1:8118/";
Run Code Online (Sandbox Code Playgroud)


小智 5

或者你可以在 /etc/apt/apt.conf 中添加如下内容:

Acquire::socks::proxy "socks://user:pass@host:port/";
Run Code Online (Sandbox Code Playgroud)

  • 我很确定这是错误的语法,它的意思是“通过socks://user:pass@host:port/代理所有以socks://开头的URL”。真的,应该是这样的:`Acquire::http::proxy "socks://user:pass@host:port/";` (5认同)
  • 这似乎在 Ubuntu 12.04 中不起作用 (2认同)