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.
Go to file
dependabot[bot] 7c2b3cd30e Bump pytest from 8.3.3 to 8.3.4
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.3 to 8.3.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.3...8.3.4)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 07:16:31 +11:00
.github Bump github/codeql-action from 2 to 3 2023-12-15 09:17:15 +11:00
docs windows: add --remote-shell option to select cmd/powershell 2024-08-06 08:38:24 +10:00
scripts update exec-sshuttle script 2024-08-06 08:38:24 +10:00
sshuttle Revert "Suppress error P is not recognized as an internal or external command,operable program or batch file." 2024-08-20 16:32:50 +10:00
tests remove unused imports 2024-08-08 10:35:47 +10:00
.envrc Add experimental peotry and nix flake stuff 2024-02-19 11:21:31 +11:00
.gitignore Add experimental peotry and nix flake stuff 2024-02-19 11:21:31 +11:00
.prospector.yml Fixes some style issues and minor bugs 2017-11-13 11:58:43 +11:00
.readthedocs.yaml Update style issues 2022-04-24 17:37:10 +10:00
.tool-versions Add ASDF .tool-versions file 2022-09-06 08:06:34 +10:00
bandit.yml updated bandit config 2018-10-17 20:52:04 +11:00
CHANGES.rst Move release notes to github 2022-01-28 09:27:47 +11:00
flake.lock Add experimental peotry and nix flake stuff 2024-02-19 11:21:31 +11:00
flake.nix Add twine to poetry packages 2024-02-19 11:21:31 +11:00
LICENSE Change license text to LGPL-2.1 2020-08-26 12:25:36 -04:00
MANIFEST.in Fix error in requirements.rst 2017-07-09 09:08:48 +10:00
poetry.lock Bump pytest from 8.3.3 to 8.3.4 2024-12-04 07:16:31 +11:00
pyproject.toml Bump twine from 5.1.1 to 6.0.1 2024-12-03 15:17:45 +11:00
README.rst windows: update docs 2024-08-06 08:38:24 +10:00
requirements-tests.txt Bump pytest from 8.3.3 to 8.3.4 2024-12-03 15:17:33 +11:00
requirements.txt Bump furo from 2024.7.18 to 2024.8.6 2024-08-07 09:10:25 +10:00
run Fix shellcheck warnings 2021-09-22 12:36:27 +00:00
setup.cfg Bump version to 1.2.0 2024-08-06 08:38:24 +10:00
setup.py Bump version to 1.2.0 2024-08-06 08:38:24 +10:00
tox.ini Remove support for Python 3.6 and 3.7 2022-03-29 11:47:05 +11:00

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, MacOS or Windows.

- 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`_.

.. _terrible performance: https://sshuttle.readthedocs.io/en/stable/how-it-works.html

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 py39-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

- Windows::
Use PyPI 

      pip install 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