PAGES
← all tools
◆ Secure Access (VPN / SASE / ZTNA)

sshuttle

v1.3.0 open-source

sshuttle is a transparent proxy tool that routes traffic over SSH, combining aspects of a VPNVPNA virtual private network, an encrypted tunnel between devices or networks. It carries traffic across another network as though the endpoints had a private connection. without requiring admin access on the remote network.

Summary

sshuttle is an open-source command-line tool that gives you transparent proxy access to a remote network over plain SSH, without setting up a real VPN. You run it from a terminal on Linux, FreeBSD, macOS or Windows, using an existing SSH login rather than admin rights on the far end, and it forwards traffic for whole subnets instead of requiring a port-forward per host. This suits sysadmins and engineers who need ad hoc access into a remote network and find OpenSSH's own port forwarding too slow or fiddly, and who want to avoid IPsecIPsecA suite of IETF protocols that authenticate and encrypt IP packets at the network layer, giving cyber tools a standards-based way to build VPNs or secure host-to-host tunnels without modifying applications., PPTP or other VPN setups the README calls needlessly complex. It can also run as a background service under a config management system. Development remains active, with 164 contributors and a release as recently as 376 days ago.

sshuttle is a transparent proxy tool that routes traffic over SSH, combining aspects of a VPN without requiring admin access on the remote network.

How sshuttle helps

How do I reach every host on a remote subnet without setting up a VPN or opening a port forward per host?

routes whole subnets of traffic through an existing SSH login, so any host or port on the far side becomes reachable the moment the session is up

Can I get into a remote network when I only have an ordinary SSH login, not admin rights there?

works entirely from a normal SSH account on the far end, needing no elevated access on the remote machine to set up the forwarding

Why does traffic through my SSH port forward feel slow or flaky compared to a real VPN?

avoids TCP-over-TCP tunneling by redirecting connections at the network layer, sidestepping the performance problem that plain port forwarding runs into

How do I keep a standing tunnel into a remote network running unattended?

can run as a background service under a config management system rather than as a one-off foreground session

How do I isolate this tunnel's traffic from the rest of the host's network stack?

on Linux it switches into its own network namespace to redirect traffic, instead of rewriting the host's shared firewall rules

all 5 features, with the evidence for each →

Languages

Not documented

Features

5 capabilities · 3 backed by code, an API document or a real run

Built from sshuttle's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What sshuttle offers you

  • Command-line interface4
All capabilities 5 capabilities
Traffic exclusion shipped Allows specific addresses or subnets to be excluded from forwarding, with the SSH connection endpoint excluded automatically (unless ProxyCommand is in use, in which case manual exclusion via -x is required). 5 releases · 9 other sources · first seen Jan 2022

Also counts toward: Command-line interface

release

  • Allow tunneling localhost ports via the tunnel v1.1.2 · Apr 2024 · source · release history
  • Allows wildcard host names as subnets in the --subnet argument v1.1.1 · Sep 2022 · source · release history
  • Adds --udp-port-mark flag to specify the tproxy UDP port mark for filtering. v1.0.0 · Jan 2022 · source · release history
  • Adds --latency-buffer-size option to configure the latency control buffer size. v1.0.0 · Jan 2022 · source · release history
  • Enables running multiple concurrent sshuttle instances with different tproxy marks for advanced routing setups. v1.0.5 · Jan 2022 · source · release history

docs

  • be added to the example. The SSH connection endpoint is automatically excluded from forwarding. When ProxyCommand is configured, automatic exclusion is skipped; use :option:-x to exclude the required address manually. Press Ctrl+C to exit. To also route DNS queries through sshuttle, try adding --dns. seen Sep 2026 · source
  • The SSH connection endpoint is automatically excluded from forwarding. When ProxyCommand is configured, automatic exclusion is skipped; use :option:sshuttle -x to exclude the required address manually. seen Sep 2026 · source
  • The SSH connection endpoint is automatically excluded from forwarding. When ProxyCommand is configured, automatic exclusion is skipped; use to exclude the required address manually. seen Sep 2026 · source
  • be added to the example. The SSH connection endpoint is automatically excluded from forwarding. When ProxyCommand is configured, automatic exclusion is skipped; use to exclude the required address manually. Press Ctrl+C to exit. To also route DNS queries through sshuttle, try adding –dns. seen Sep 2026 · source
  • Transparent proxy over SSH that routes traffic to a remote network without requiring VPN or admin access on the remote side.

example

  • Route traffic for any host ending in .internal using wildcard syntax. sshuttle --dns --method auto --subnet '*.internal' 192.168.1.1 v1.1.1 · Sep 2022 · source
  • Run two separate tunnels with different tproxy marks for complex multi-homed routing. sshuttle --tproxy -m 100 user@host1 & sshuttle --tproxy -m 200 user@host2 v1.0.5 · Jan 2022 · source
  • Tune the latency control buffer size to optimize performance for high-latency links. sshuttle --latency-buffer-size 65535 <target> v1.0.0 · Jan 2022 · source
  • Set a custom UDP port mark for tproxy filtering on systems requiring it. sshuttle --udp-port-mark 1234 <target> v1.0.0 · Jan 2022 · source
Network namespace scoping verified Runs the tool inside a named network namespace or the network namespace of a given process, identified by name or PID. 5 releases · 3 other sources · first seen Jan 2022

release

  • Uses a Linux network namespace for traffic redirection instead of modifying the host's iptables rules directly. v1.3.0 · Feb 2025 · source · release history
  • Add support for the SSHUTTLE_ARGS environment variable to pass extra CLI arguments v1.1.2 · Apr 2024 · source · release history
  • Add IPv6 support to the nat (iptables) method v1.1.0 · Jan 2022 · source · release history
  • Allow comments in the configuration file passed with -c or @ v1.1.0 · Jan 2022 · source · release history
  • Adds native IPv6 support for the nft packet forwarding method. v1.0.5 · Jan 2022 · source · release history

command line

  • --namespace — Run inside of a net namespace with the given name. v1.3.0 · Feb 2025 · command-line history
  • --namespace-pid — Run inside the net namespace used by the process with the given pid. v1.3.0 · Feb 2025 · command-line history

example

  • Pass extra sshuttle arguments like --method or -v without modifying scripts SSHUTTLE_ARGS="-v -x 192.168.1.0/24" sshuttle 10.0.0.0/8 v1.1.2 · Apr 2024 · source
Linux group scoping verified Restricts rule application to a specific Linux group. 5 releases · 2 other sources · first seen Jan 2022

Also counts toward: Command-line interface

release

  • Support gid-based routing to route traffic by group ID v1.1.2 · Apr 2024 · source · release history
  • Removes --sudoers flag; introduces --sudoers-no-modify for sudoers file management v1.1.1 · Sep 2022 · source · release history
  • The --sudoers flag is removed and replaced by --sudoers-no-modify. v1.1.1 · Sep 2022 · source · release history
  • Allow the use of doas instead of just sudo for privilege escalation v1.1.0 · Jan 2022 · source · release history
  • Generates an auto-sudoers file to manage sudo privileges without manual configuration. v1.0.0 · Jan 2022 · source · release history

command line

  • --group — apply all the rules only to this linux group v1.1.2 · Feb 2024 · command-line history

example

  • Run sshuttle without modifying the sudoers file on the remote host. sshuttle --dns --method auto --sudoers-no-modify 10.0.0.0/8 v1.1.1 · Sep 2022 · source
Remote execution targeting verified Controls how the tool executes commands on remote targets, including the remote shell program to use and whether a double-dash delimiter is added before the Python command. 2 other sources · first seen Feb 2025

Also counts toward: Command-line interface

command line

  • --no-cmd-delimiter — do not add a double dash before the python command v1.2.0 · Feb 2025 · command-line history
  • --remote-shell — alternate remote shell program instead of defacto posix shell. For Windows targets it would be either `cmd` or `powershell` unless something like git-bash is in use. v1.2.0 · Feb 2025 · command-line history
OpenWRT support documented Supports running on OpenWRT devices, with installation steps covering both older (pre-25.12, using opkg) and newer (post-25.12, using apk) OpenWRT releases. 1 other source

Also counts toward: Command-line interface

docs

  • OpenWRT ======== OpenWRT prior to 25.12 Run:: opkg install python3 python3-pip iptables-mod-extra iptables-mod-nat-extra iptables-mod-ipopt python3 /usr/bin/pip3 install sshuttle sshuttle -l 0.0.0.0 -r -x 192.168.1.1 0/0 OpenWRT after 25.12 Run:: apk update apk add python3 python3-pip iptables-mod-extra… seen Sep 2026 · source

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for sshuttle, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail sshuttle puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

6 entries

  1. February 20251
  2. April 20241
  3. September 20221
  4. January 20223
    Show

    6 entries

    Project health

    Issue, contributor and maintainer activity in sshuttle/sshuttle, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 9 ±0 vs prior 12 months
    2. Maintainers 2 +1 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close < 1 day first maintainer reply 4.7 hours
    6. Open backlog 210 of 534 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 210
    3. Contributors / month 3
    4. Commits / month 3
    5. Stars 13,566
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →