sshuttle

Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.

Stars
10.6K
Forks
691
Open issues
188
Closed issues
304
Last release
over 1 year ago
Last commit
6 months ago
Watchers
10.6K
Total releases
8
Total commits
1.03K
Open PRs
8
Closed PRs
329
Repo URL
Platform
License
lgpl-2.1
Category
Usecase
VPN
Technology
Python Shell
Offers premium version?
NO
Proprietary?
NO
About

sshuttle: where transparent proxy meets VPN meets ssh

As far as I know, sshuttle is the only program that solves the following common case:

  • Your client machine (or router) is Linux, FreeBSD, or MacOS.
  • You have access to a remote network via ssh.
  • You don't necessarily have admin access on the remote network.
  • The remote network has no VPN, or only stupid/complex VPN protocols (IPsec, PPTP, etc). Or maybe you are the admin and you just got frustrated with the awful state of VPN tools.
  • You don't want to create an ssh port forward for every single host/port on the remote network.
  • You hate openssh's port forwarding because it's randomly slow and/or stupid.
  • You can't use openssh's PermitTunnel feature because it's disabled by default on openssh servers; plus it does TCP-over-TCP, which has terrible performance.

Obtaining sshuttle

  • Ubuntu 16.04 or later:

    apt-get install sshuttle
    
  • Debian stretch or later:

    apt-get install sshuttle
    
  • Arch Linux:

    pacman -S sshuttle
    
  • Fedora:

    dnf install sshuttle
    
  • openSUSE:

    zypper in sshuttle
    
  • Gentoo:

    emerge -av net-proxy/sshuttle
    
  • NixOS:

    nix-env -iA nixos.sshuttle
    
  • From PyPI:

    sudo pip install sshuttle
    
  • Clone:

    git clone https://github.com/sshuttle/sshuttle.git
    cd sshuttle
    sudo ./setup.py install
    
  • FreeBSD:

    # ports
    cd /usr/ports/net/py-sshuttle && make install clean
    # pkg
    pkg install py36-sshuttle
    
  • OpenBSD:

    pkg_add sshuttle
    
  • macOS, via MacPorts:

    sudo port selfupdate
    sudo port install sshuttle
    

It is also possible to install into a virtualenv as a non-root user.

  • From PyPI:

    virtualenv -p python3 /tmp/sshuttle
    . /tmp/sshuttle/bin/activate
    pip install sshuttle
    
  • Clone:

    virtualenv -p python3 /tmp/sshuttle
    . /tmp/sshuttle/bin/activate
    git clone https://github.com/sshuttle/sshuttle.git
    cd sshuttle
    ./setup.py install
    
  • Homebrew:

    brew install sshuttle
    
  • Nix:

    nix-env -iA nixpkgs.sshuttle
    

Documentation

The documentation for the stable version is available at: https://sshuttle.readthedocs.org/

The documentation for the latest development version is available at: https://sshuttle.readthedocs.org/en/latest/

Running as a service

Sshuttle can also be run as a service and configured using a config management system: https://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe

Alternative Projects

Subscribe to Open Source Businees Newsletter

Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

We'll never share your email with anyone else.