sshuttle is a transparent proxy server that forwards over a SSH connection and sets up a proxy by running Python scripts on the remote server. sshuttle
can be run under the following conditions:
- client machine or router is Linux-based, FreeBSD or Mac OS
- administrative privileges on client
- access to remote network via SSH
- no administrator privileges on remote network
- availability of Python on remote server
Install sshuttle
from the Software Center or the Terminal:
sudo apt-get install sshuttle
The basic command for running sshuttle with routing all traffic is:
sshuttle -r username@sshserver:port 0/0
Upon the execution of the command, a sudo
password prompt will appear and subsequently the password to SSH account. No other details will appear except for a short message and return to shell upon failure. For more status messages, run sshuttle
in verbose mode with the -v
flag.
In this example all internet traffic except DNS is routed through the VPN. -r
flag denotes the remote hostname and optional username and port that follows in the above example. 0/0
is short for 0.0.0.0/0
that represents the subnets to route over the VPN. The usage of 0/0
routes all the traffic except DNS requests to the remote server. DNS tunelling is possible with the usage of -H
flag.
Please read the man page (man sshuttle
) for the details of options and modes under which sshuttle
can run. For information about the concept and more examples, refer to the project page.