74

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?

6
  • 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, 2015 at 13:49
  • 2
    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. Feb 11, 2015 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, 2015 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? Feb 11, 2015 at 8:29
  • 1
    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, 2017 at 14:43

6 Answers 6

79

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
  • 2
    +1 for unset instruction :) Jul 23, 2019 at 6:42
36

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
  • 1
    It is worth mentioning that the proxy.sh file should be made executable.
    – Alireza
    Nov 14, 2018 at 11:49
3

using torsocks this can be accomplished like so:

ultralazer@askubuntu:~$ torsocks --shell
New torified shell coming right up...

ultralazer@askubuntu:~$ curl icanhazip.com
185.220.100.242 (tor ip)

man page:

ultralazer@askubuntu:~$ torsocks --help
ultralazer@askubuntu:~$ man torsocks
2

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.

1

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

1

From my research this was the only thing that worked for me:

Install ProxyChains:

sudo apt-get install proxychains

Edit the conf file to use your proxy:

sudo vi /etc/proxychains.conf

Check the last line and edit it. Then just run:

proxychains ssh/curl/wget 

or whatever command you want to go through the proxy.

This is someone else answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .