如何在Xubuntu、Lubuntu或Ubuntu Studio中设置系统范围的代理服务器?

我无法在任何地方找到代理设置。我需要通过终端设置,通过 gconftools 还是有相应的图形界面可供使用?

6个回答

Ubuntu Studio、Xubuntu和XFCE中的系统代理必须通过环境变量设置

Ubuntu Studio和Xubuntu使用XFCE桌面环境,该环境不包含图形化设置工具以设置系统范围的代理(与默认的Ubuntu桌面环境Unity不同)。

1. 为大多数程序设置代理/代理服务器

  • gksudo leafpad(或您喜欢的编辑器)打开/etc/environment文件。该文件存储了系统引导时初始化的系统范围变量。
  • 添加以下行,并适当修改。您必须在大写和小写之间进行复制,因为(不幸的是)有些程序只会查找其中一个:

    http_proxy=http://myproxy.server.com:8080/
    https_proxy=http://myproxy.server.com:8080/
    ftp_proxy=http://myproxy.server.com:8080/
    no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
    HTTP_PROXY=http://myproxy.server.com:8080/
    HTTPS_PROXY=http://myproxy.server.com:8080/
    FTP_PROXY=http://myproxy.server.com:8080/
    NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
    

2. 然后为诸如Rhythmbox之类的GTK3程序设置代理:

一些较新的GTK3程序(例如Rhythmbox)忽略上面设置的环境变量,而依赖于Gnome设置。为确保它们得到覆盖,请打开一个终端并逐行粘贴以下内容,根据需要进行修改:

gsettings set org.gnome.system.proxy mode 'manual' 
gsettings set org.gnome.system.proxy.http host 'myproxy.server.com'
gsettings set org.gnome.system.proxy.http port 8080

3. 最后,为 apt-get 和 Update Manager 设置代理

  • 这些程序也不会遵守环境变量。在 /etc/apt/apt.conf.d/ 目录下创建一个名为 95proxies 的文件,并包含以下内容:

    Acquire::http::proxy "http://myproxy.server.com:8080/";
    Acquire::ftp::proxy "ftp://myproxy.server.com:8080/";
    Acquire::https::proxy "https://myproxy.server.com:8080/";
    

最后,注销并重新启动以确保更改生效。


来源:123。特别是参考链接1,可以获得额外的帮助,包括一个快速开启/关闭代理的脚本。

打开/关闭代理服务器的脚本:

免责声明: 在继续之前,请注意我在Lubuntu 14.04上尝试过这个方法,重要的是在运行上述脚本之前,文件/etc/environment应只有一行内容,即'$PATH...',文件中不应包含其他任何内容,否则您可能需要修改脚本代码。这些脚本会设置和取消代理,但它们依赖于截断文件和追加文件来更改/etc/environment/etc/apt/apt.conf.d/95proxies文件。因此,请确保:

1) /etc/environment 文件仅包含一行内容,即'$PATH:...',没有其他内容。

2) 文件/etc/apt/apt.conf.d/95proxies不存在或者没有任何重要内容。

所以!如果您想自动化这个打开和关闭代理的过程,而不必输入很多命令,您可以创建两个可执行的shell脚本proxyon.shproxyoff.sh,如下所示:

proxyon.sh:

if [ $(id -u) -ne 0 ]; then
  echo "This script must be run as root";
  exit 1;
fi

if [ $# -eq 2 ]
  then

  gsettings set org.gnome.system.proxy mode 'manual' ;
  gsettings set org.gnome.system.proxy.http host '$1';
  gsettings set org.gnome.system.proxy.http port $2;


  grep PATH /etc/environment > lol.t;
  printf \
  "http_proxy=http://$1:$2/\n\
  https_proxy=http://$1:$2/\n\
  ftp_proxy=http://$1:$2/\n\
  no_proxy=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n\
  HTTP_PROXY=http://$1:$2/\n\
  HTTPS_PROXY=http://$1:$2/\n\
  FTP_PROXY=http://$1:$2/\n\
  NO_PROXY=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n" >> lol.t;

  cat lol.t > /etc/environment;


  printf \
  "Acquire::http::proxy \"http://$1:$2/\";\n\
  Acquire::ftp::proxy \"ftp://$1:$2/\";\n\
  Acquire::https::proxy \"https://$1:$2/\";\n" > /etc/apt/apt.conf.d/95proxies;

  rm -rf lol.t;

  else

  printf "Usage $0 <proxy_ip> <proxy_port>\n";

fi

proxyoff.sh:

if [ $(id -u) -ne 0 ]; then
  echo "This script must be run as root";
  exit 1;
fi

gsettings set org.gnome.system.proxy mode 'none' ;

grep PATH /etc/environment > lol.t;
cat lol.t > /etc/environment;

printf "" > /etc/apt/apt.conf.d/95proxies;

rm -rf lol.t;

如何使用:一旦您创建了这些脚本并使其可执行,您可以将它们放在任何地方。要启用代理,您只需进入包含“proxyon.sh”脚本的目录,然后输入sudo ./proxyon.sh {host} {port}。以此为例:
 $ sudo ./proxyon.sh 10.2.20.17 8080
 OR
 $ sudo ./proxyon.sh myproxy.server.com 8080

在这里,'10.2.20.17' 是代理服务器的IP地址 - 你也可以输入类似于 myproxy.server.com 的内容 - 而 '8080' 则是端口号。之后只需注销并重新登录您的账户,以确保一切设置生效。然后您就可以开始使用互联网或其他功能了。当您想要关闭代理时,请进入包含 'proxyoff.sh' 的目录,并输入以下命令:

 $ sudo ./proxyoff.sh

这将取消所有代理设置。现在注销并重新登录以切换到正常模式。

1相关链接:http://superuser.com/questions/357688/how-to-configure-proxy-settings-on-linux-xfce - Grzegorz Oledzki
如果你需要为apt-get代理设置授权,可以像这样设置:Acquire::http::proxy "http://user:pass@myproxy.server.com:8080/"; - Jim Ford
3以上方法对我有效。但是当我把笔记本电脑从工作带回家时,没有代理的情况下,我无法连接到互联网。有没有一种简便的方法,在回家后不用去修改配置文件和重新启动电脑的极端措施下,再次禁用代理?这将是一个很好的补充答案。 - TenLeftFingers
1为了在公共WiFi上保持安全,我正在尝试配置我的Chromium浏览器(在Xubuntu 16.04 LTS中),通过一个在家里的树莓派上隧道传输的PuTTY Socks5代理(localhost:10001)来传递所有网页请求,以便在离家时使用。上述说明似乎不适用于Socks5代理,所以希望我能弄清楚。(注意:Firefox很容易,因为它的代理设置可以在Firefox内部设置,但我也想为Chromium和apt-get设置代理-最好还包括DNS请求通过代理进行)。 - Gabriel Staples
如果您能添加Socks 5代理的说明/修改,那将非常有帮助。谢谢! - Gabriel Staples
谷歌的力量向我揭示了一个秘密,当你打开Chromium时,可以通过命令行选项设置socks5代理服务器。请参考这里:https://www.chromium.org/developers/design-documents/network-stack/socks-proxy。所以,在我之前的评论中描述的socks5代理情况下,在Linux中,告诉Chromium使用通过SSH隧道传输的socks5代理的命令是:`chromium-browser --proxy-server="socks5://localhost:10001" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"`。 - Gabriel Staples
当您连接到WiFi甚至连接有线网络时,您可以自动配置所有不同应用程序所需的各种代理设置。请参阅:https://gist.github.com/frgomes/544014b53e5384e00847da20b3e1da5b - Richard Gomes
魔术般的/etc/apt/apt.conf.d/95proxies是什么意思?我在/etc/apt/apt.conf中添加了apt的代理设置,它有效果。然而,这些代理设置对Firefox没有任何影响。您必须再次在Firefox中进行配置。 - smwikipedia
很好的回答,但是当通过Ubuntu的网络配置设置代理时,身份验证数据存储在哪里?它要求用户和密码,在/etc/environment中只保存了代理URL而没有身份验证数据。我正在尝试配置没有图形界面的Ubuntu服务器,并且不喜欢将明文密码放在/etc/environment中,因为这是我的域用户/密码。 - JorgeeFG
为什么在运行 proxyon.shproxyoff.sh 后需要注销,而不是直接关闭代理?在Ubuntu的图形界面中,你可以在不注销和重新登录的情况下打开和关闭代理。 - Tim
这个脚本缺少重要的配置数据,比如设置代理也要包括 gsettings set org.gnome.system.proxy.httpsgsettings set org.gnome.system.proxy.ftpgsettings set org.gnome.system.proxy.socks。如果你不设置这些,就可以称之为"系统范围"。 - m3nda
如果你喜欢通过(Gnome)图形用户界面来设置所有这些,你可以使用更新的ubproxy(2020-07-28)。 - Andreas Covidiot


看起来很有前途。 - Dee
当您连接到WiFi甚至有线网络时,您可以自动配置所有不同应用程序所需的各种代理设置。请参阅:https://gist.github.com/frgomes/544014b53e5384e00847da20b3e1da5b - Richard Gomes

我有一些处理这个的函数。像这样调用它们:
myProxyOn

https://gist.github.com/fernando-basso/6352040

#!/usr/bin/env bash

# gsettings list-recursively org.gnome.system.proxy

# Change de ip address and port number accordingly.
function myProxyOn() {
    gsettings set org.gnome.system.proxy mode 'manual' # ' manual / nome / automatic '
    gsettings set org.gnome.system.proxy.http host '10.0.0.1'
    gsettings set org.gnome.system.proxy.http port 8080
    gsettings set org.gnome.system.proxy.https host '10.0.0.1'
    gsettings set org.gnome.system.proxy.https port 8080
    gsettings set org.gnome.system.proxy.ftp host '10.0.0.1'
    gsettings set org.gnome.system.proxy.ftp port 8080

    echo "Configuração do 'System Proxy' settada para 'manual', com host 10.0.0.1, port 8080."
}

function myProxyOff() {
    gsettings set org.gnome.system.proxy mode 'none' # ' manual / nome / automatic '
    echo "Proxy cofigurado para 'none'."
}

function proxyOn() { # {{{
    #echo -n 'Username: '
    #read -e username
    #echo -n 'Password: '
    #read -es password
    #echo ''
    echo 'Setting variable "http_proxy"...'
    #export http_proxy="http://$username:$password@172.17.0.1:8080/"
    export http_proxy="http://10.0.0.1:8080/"
    echo 'Setting variable "https_proxy..."'
    export https_proxy="https://10.0.0.1:8080/"
    echo 'Setting variable "ftp_proxy"...'
    #export ftp_proxy="http://$username:$password@172.17.0.1:8080/"
    export ftp_proxy="ftp://10.0.0.1:8080/"
    echo 'Done!'
}

function proxyOff() {
    unset HTTP_PROXY
    unset http_proxy
    unset FTP_proxy
    unset ftp_proxy
    echo -e "\nProxy environment variables removed!"
}

2把密码存储在文本文件中是一个糟糕的建议。 - BЈовић
1@BЈовић:你说得对。在我的情况下,这是公共大学代理密码,所以我猜这没关系。 - Fernando Basso
有没有办法配置一个Socks代理? - Gabriel Staples
@gabrielstaples gsettings set org.gnome.system.proxy.socks,我不知道为什么没有一个回复涵盖了完整的设置。我从Fiddler的“捕获”脚本中获取了完整的列表,该脚本可以通过一个按钮来捕获机器流量。 - m3nda
我没弄清楚如何运行这个配置。我已经用bash script.sh运行了两个shell脚本,但都没有成功。 - sequence

通过在/etc/apt/apt.conf.d目录下的proxy95文件进行apt-get调整,不需要重新启动整个系统。

  • 只需在文件写入后立即生效
  • 文件消失后立即失效

考虑编写脚本,通过将文件重命名为*.bak来快速切换代理(如果需要)。


你可以通过我们的顶部答案/etc/apt/apt.conf/etc/environment/etc/bash.bashrcgsettings)以及使用增强版ubproxy GUI来完成所有手动设置,并且还可以通过我们的o2idev/ubproxy分支来安装Java。
很不幸的是,在新版本的Ubuntu(基于gtk3)中,需要存在之前已经存在的依赖Ubuntu库。 在ubproxy修复此问题之前,至少需要手动设置apt代理,然后执行以下操作:
sudo apt install python python-gtk2
sudo python ubproxy

但是如何运行您的ubproxy脚本呢?它需要Python2的gtk,而这无法通过APT安装,因为它已经非常过时且不再受支持。请问您能否在您的Python requirements.txt文件和虚拟环境中包含所需的库呢? - sequence
嗨 @sequence,我在上面的帖子中添加了一些提示。不幸的是,我现在没有太多时间来处理这个项目。你可以获得代码并自己完成,或者你提供所需的更改,我只需要应用它们。抱歉。 - Andreas Covidiot

前往Dash主页,输入“系统设置”,点击系统设置,然后选择网络。代理设置将对您可见。点击“系统范围”。这可能与系统代理设置相同。


1工作室使用的是xfce而不是ubuntu。 - 23 93 26 35 19 57 3 89
1试试这个链接:http://superuser.com/questions/357688/how-to-configure-proxy-settings-on-linux-xfce - 23 93 26 35 19 57 3 89