How do I configure proxies without GUI?
System-wide proxies in CLI Ubuntu/Server must be set as environment variables.
- Open the
/etc/environment
file withvi
(or your favorite editor). This file stores the system-wide variables initialized upon boot. -
Add the following lines, modifying appropriately. You must duplicate in both upper-case and lower-case because (unfortunately) some programs only look for one or the other:
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"
-
apt-get
,aptitude
, etc. will not obey the environment variables when used normally withsudo
. So separately configure them; create a file called95proxies
in/etc/apt/apt.conf.d/
, and include the following:Acquire::http::proxy "http://myproxy.server.com:8080/"; Acquire::ftp::proxy "ftp://myproxy.server.com:8080/"; Acquire::https::proxy "https://myproxy.server.com:8080/";
Finally, logout and reboot to make sure the changes take effect.
Sources: 1, 2. See 1 in particular for additional help, including a script to quickly turn on/off the proxies.
If you have an authenticating proxy, then the URLs will be different. Instead of:
"http://myproxy.server.com:8080/"
You'll have:
"http://user_name:[email protected]:8080/"
Note that these are still URLs, so passwords (and possibly usernames) will have to be URL encoded.
For example, a username of muru
and a password of )qv3TB3LBm7EkP}
would look like:
"http://muru:)qv3TB3LBm7EkP%[email protected]:8080/"
This can be done in various ways:
- There several websites for encoding:
- http://meyerweb.com/eric/tools/dencoder/
- http://www.url-encode-decode.com/
- http://www.blooberry.com/indexdot/html/topics/urlencoding.htm etc.
- Programmatic:
- A
bash
script from Stack Overflow - In Perl, from Stack Overflow
- A
In a pinch, you can use man url
to see which characters need to be encoded:
An escaped octet is encoded as a character triplet,
consisting of the percent character "%" followed by
the two hexadecimal digits representing the octet code...
And the octet codes are available on man ascii
.