Ubuntu中的系统范围代理设置


22

我想在需要身份验证的大学代理服务器上使用Internet。我在google上搜索了解决方案,而我发现的最佳解决方案就是这个。我已经修改了接受答案中的脚本以包含身份验证。它去了:

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

if [ $# -eq 4 ] 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;
gsettings set org.gnome.system.proxy.http authentication-user '$3';
gsettings set org.gnome.system.proxy.http authentication-password '$4';


grep PATH /etc/environment > lol.t;
printf \
"http_proxy=http://$3:$4@$1:$2/\n\
 https_proxy=http://$3:$4@$1:$2/\n\
 ftp_proxy=http://$3:$4@$1:$2/\n\
 no_proxy=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n\
 HTTP_PROXY=http://$3:$4@$1:$2/\n\
 HTTPS_PROXY=http://$3:$4@$1:$2/\n\
 FTP_PROXY=http://$3:$4@$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://$3:$4@$1:$2/\";\n\
  Acquire::ftp::proxy \"ftp://$3:$4@$1:$2/\";\n\
  Acquire::https::proxy \"https://$3:$4@$1:$2/\";\n" > /etc/apt/apt.conf.d/95proxies;

rm -rf lol.t;

else

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

fi

但是,在线帐户仍然不起作用(与rhythmbox和其他GTK3程序相同)。出现白色屏幕,如下所示:

在此处输入图片说明

关于如何解决的任何建议?


Answers:


31

终于解决了:

(依次执行以下步骤)

1.对于gtk3程序,例如rhythmbox和在线帐户:

首先,您需要在网络设置中输入代理设置(以及身份验证):

在此处输入图片说明

然后在系统范围内应用。

2.对于apt,软件中心等

编辑档案 /etc/apt/apt.conf

然后将所有现有文本替换为以下几行

Acquire::http::proxy "http://username:password@host:port/";
Acquire::ftp::proxy "ftp://username:password@host:port/";
Acquire::https::proxy "https://username:password@host:port/";

3.环境变量

编辑档案 /etc/environment

然后在PATH =“ something here”之后添加以下行

http_proxy=http://username:password@host:port/
ftp_proxy=ftp://username:password@host:port/
https_proxy=https://username:password@host:port/

就这样..


1
步骤1)是否会更改/ etc / environment?我想要一种通过命令行执行此步骤的方法。
卢卡斯

似乎步骤1)也适用apt-get update。因此,不需要步骤2)。
smwikipedia

@Raman我这样做时是否需要转义密码中的特殊字符?如果是这样,那又如何?
code_dragon

2

要通过wget代理下载软件包,必须在/ etc / environment中进行设置,而要通过apt-get代理下载软件包,则必须在/etc/apt/apt.conf中进行设置。


2
请详细说明您的答案,它目前没有提供太多有用的信息。
字节指挥官

1
欢迎来到Ask Ubuntu!我建议编辑此答案以将其扩展为有关如何执行此操作的特定详细信息。(另请参阅“我如何编写一个好的答案?”,以获取有关在Ask Ask Ubuntu上认为最有价值的答案的一般建议。)
David Foerster,2016年

1

为了wget使用代理,我还要添加一个.wgetrc在您的主目录中创建一个,其中包含:

http_proxy = http://proxy:port/
https_proxy = http://proxy:port/
proxy_user = user
proxy_password = password
use_proxy = on
wait = 15

1

当然,还不止这些。有些多个程序(npmcurlgit):

npm config set proxy $HTTP_PROXY
npm config set https-proxy $HTTPS_PROXY
npm config set strict-ssl false
echo "proxy = $HTTP_PROXY" > ~/.curlrc
echo "noproxy = $NO_PROXY" >> ~/.curlrc
git config --global http.proxy $HTTP_PROXY
git config --global https.proxy $HTTPS_PROXY

对于Maven,编辑~/.m2/settings.xml。IntelliJ似乎也没有选择全局配置。

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.