I am looking to set a proxy for terminal. What I need is I want to send all terminal communications to the internet through a proxy, say tor.

I tried to set a system wide proxy set up. But Terminal doesn't obey the system wide proxy configuration.

Is there any other way to do this?

  • You mean ssh or telnet or ... ? Please explain us "terminal communications". You can telnet to some host via proxy or ftp them, but communication from minicom you can not send via net ... except like log file .... – 2707974 Feb 10 '15 at 13:49
  • 1
    Is it possible to set a proxy for all network related activities done over the terminal? Instead of setting proxy for wget,curl and others separately. I am looking for such a solution. – Anonymous Platypus Feb 11 '15 at 5:18
  • Yes, but wget usually work on port 80 or 443, ssh on port 22, telnet on 23, ftp on 20 and 21 ... You can use simpleproxy or tinyproxy – 2707974 Feb 11 '15 at 8:15
  • How to set this proxy for terminal? Do I explicitly set it for different apps running on terminal or can I set it in terminal such a way that all the commands I run in terminal go through this proxy? – Anonymous Platypus Feb 11 '15 at 8:29
  • ubuntu terminal needs http proxy, when you use SOCKS5 proxy, like shadowsocks, you can use proxychains to bridge SOCKS5 to http proxy. Check this github.com/shadowsocks/shadowsocks/wiki/… – hakunami Nov 2 '17 at 14:43

Terminal is not net application. Maybe is better to say, in your case, terminal is container for net application like ssh, telnet, lftp, wget, lynx ...

Edit your:

sudo -H gedit /etc/profile.d/proxy.sh

Enter the details in this format.

export http_proxy=http://username:password@proxyhost:port/ 
export ftp_proxy=http://username:password@proxyhost:port/
export telnet_proxy=http://username:password@proxyhost:port/

This is for when using wget, ftp, lftp, telnet in terminal

ssh has no native SOCKS client support, you need to use a ProxyCommand for that, for instance with socat:

ssh -o ProxyCommand='socat - SOCKS4A:myproxy:%h:%p,socksuser=nobody' user@host

Or use things like tsocks to transparently use SOCKS for TCP traffic.

For SOCKS5 with socat 2:

ssh -o ProxyCommand='socat - "SOCKS5:%h:%p|tcp:myproxy:1080"' user@host

For HTTP Proxy CONNECT method with socat 2:

ssh -o ProxyCommand='socat - "PROXY:%h:%p|tcp:myproxy:80"' user@host
  • 1
    It is worth mentioning that the proxy.sh file should be made executable. – Alireza Nov 14 '18 at 11:49

export the below variables in terminal

export http_proxy='http://proxyServerSddress:proxyPort'    
export https_proxy='https://proxyServerSddress:proxyPort'

and use the following commands to disable proxy

unset http_proxy
unset https_proxy
  • +1 for unset instruction :) – Shahrokhian Jul 23 '19 at 6:42

In my case I was either missing enclosing inverted comma on both sides. putting "http//.." was wrong and not putting anything such as http//... was wrong too. What worked was ..when I used single inverted commas on both sides.

export http_proxy='http://username:password@proxyhost:port/' export https_proxy='https://username:password@proxyhost:port/' export ftp_proxy='http://username:password@proxyhost:port/'

Remember these three are 3 commands to be run separately three times.


I set export variables

export http_proxy=http://username:password@proxyhost:port/ 
export https_proxy=https://username:password@proxyhost:port/
export ftp_proxy=http://username:password@proxyhost:port/

in ~/.bashrc and /etc/enviroment

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.