SSHUTTLE(1) sshuttle SSHUTTLE(1) (NAME) sshuttle - VPN SSH (SYNOPSIS) sshuttle [options] -r [username@]sshserver[:port] (DESCRIPTION) sshuttle ssh VPN Python . (root) . sshuttle () VPN . sshuttle () (subnet) VPN . (OPTIONS) VPN a.b.c.d[/width][port[-port]]. 1.2.3.4 ( IP ) 1.2.3.4/32 ( 1.2.3.4) 1.2.3.0/24 ( 255.255.255.0). IPv4 0/0 IPv6 ::/0 . 1.2.3.4:8000 8000 1.2.3.4 1.2.3.0/24:8000-9000 8000 9000 ( ) IP 1.2.3.0/24 . IP . IP IP . (width) IP ( IPv4 IPv6 ) . IPv4 IPv6 . example.com example.com:8000 example.com/24 example.com/24:8000 example.com:8000-9000. --method (firewall) sshuttle auto sshuttle PATH . auto . -l <[ip:]port>, --listen=<[ip:]port> ip (transparent proxy). sshuttle IP 127.0.0.1 (localhost) . ( sshuttle ) IP Forwarding --listen 0.0.0.0:0 . IP sshuttle --listen localhost. nft tproxy pf IPv6 . IPv4 IPv6 --listen 127.0.0.1:0,[::1]:0. -H, --auto-hosts /etc/hosts VPN . DNS (/etc/resolv.conf) . ssh thatserver . sshuttle VPN DNS sshuttle /etc/hosts (merge) . VPN DNS . sshuttle (cache) ~/.sshuttle.hosts . --auto-hosts . sshuttle . -N, --auto-nets . (routing table) . IPv6 . IPv6 . ::/0 IPv6 . --dns DNS DNS . DNS (/etc/resolv.conf /run/systemd/resolve/resolv.conf) DNS --to-ns . DNS 53 . --ns-hosts= DNS () DNS . --dns () DNS DNS . DNS dnsmasq. --to-ns= DNS . sshuttle ( /etc/resolv.conf ) . --python python . python3 ( python python3) PATH . -r <[username@]sshserver[:port]>, --remote=<[username@]sshserver[:port]> ssh . example.com :2222 example.com:2244. ssh (alias) ~/.ssh/config . -x , --exclude= (forwarding) . . -x . 0/0 -x 1.2.3.0/24 VPN . -X , --exclude-from= . . -v, --verbose . . sshuttle . -e, --ssh-cmd . ssh . ssh ssh -e 'ssh -v'. --remote-shell (Windows) posix . cmd powershell git-bash . --no-cmd-delimiter (--) . ssh . --seed-hosts --auto-hosts. --auto-hosts netstat . --auto-hosts . --no-latency-control (latency) . ssh . sshuttle << >> ("fullness check") . . sshuttle ( sshuttle ). . . --latency-buffer-size . 32768 . ( --no-latency-control) . -D, --daemon (fork) . --syslog . -s , --subnets= . --syslog stderr syslog(3) . --daemon . --pidfile= --daemon (pid) sshuttle pidfilename . sshuttle.pid . --disable-ipv6 IPv6 (nat nft tproxy pf) . --firewall ( ) (firewall manager) . sshuttle (root) . sshuttle root sudo su sshuttle . --hostwatch ( ) hostwatch . --auto-hosts . --auto-hosts . --sudoers-no-modify sshuttle sshuttle . (INSECURE) . . --sudoers-user . --sudoers-user %group_name . . ALL ( : --sudoers-no-modify ). --sudoers-no-modify . -t , --tmark= tproxy : (mark) . . 0x01 . --version . . sshuttle /etc/sshuttle.conf @ @/etc/sshuttle.conf. sshuttle . . : value --option1 value1 --option2 value2 () . : # company-internal API 8.8.8.8/32 # home IoT 192.168.63.0/24 (ENVIRONMENT VARIABLE) SSHUTTLE_ARGS . . : SSHUTTLE_ARGS="-e 'ssh -v' --dns" sshuttle -r example.com 0/0 (EXAMPLES) TCP IPv4 (-r) example.com ( --method ) . 0/0 0.0.0.0/0 IPv4 . ::/0 IPv6 . example.com:22 (-x) ssh sshuttle . sshuttle . Ctrl+C . DNS sshuttle --dns . -v : $ sshuttle -r example.com -x example.com:22 0/0 Starting sshuttle proxy (version ...). [local sudo] Password: fw: Starting firewall with Python version 3.9.5 fw: ready method name nat. c : IPv6 disabled since it isn't supported by method nat. c : Method: nat c : IPv4: on c : IPv6: off (not available with nat method) c : UDP : off (not available with nat method) c : DNS : off (available) c : User: off (available) c : Subnets to forward through remote host (type, IP, cidr mask width, startPort, endPort): c : (, '0.0.0.0', 0, 0, 0) c : Subnets to exclude from forwarding: c : (, '...', 32, 22, 22) c : (, '127.0.0.1', 32, 0, 0) c : TCP redirector listening on ('127.0.0.1', 12299). c : Starting client with Python version 3.9.5 c : Connecting to server... user@example.com's password: s: Starting server with Python version 3.6.8 s: latency control setting = True s: auto-nets:False c : Connected to server. fw: setting up. fw: iptables -w -t nat -N sshuttle-12299 fw: iptables -w -t nat -F sshuttle-12299 ... Accept: 192.168.42.121:60554 -> 77.141.99.22:22. ^C c : Keyboard interrupt: exiting. c : SW'unknown':Mux#1: deleting (1 remain) c : SW#7:192.168.42.121:60554: deleting (0 remain) : $ sshuttle -vNHr example.com -x example.com:22 Starting sshuttle proxy (version ...). [local sudo] Password: fw: Starting firewall with Python version 3.9.5 fw: ready method name nat. c : IPv6 disabled since it isn't supported by method nat. c : Method: nat c : IPv4: on c : IPv6: off (not available with nat method) c : UDP : off (not available with nat method) c : DNS : off (available) c : User: off (available) c : Subnets to forward through remote host (type, IP, cidr mask width, startPort, endPort): c : NOTE: Additional subnets to forward may be added below by --auto-nets. c : Subnets to exclude from forwarding: c : (, '...', 32, 22, 22) c : (, '127.0.0.1', 32, 0, 0) c : TCP redirector listening on ('127.0.0.1', 12300). c : Starting client with Python version 3.9.5 c : Connecting to server... user@example.com's password: s: Starting server with Python version 3.6.8 s: latency control setting = True s: auto-nets:True c : Connected to server. c : seed_hosts: [] s: available routes: s: 77.141.99.0/24 fw: setting up. fw: iptables -w -t nat -N sshuttle-12300 fw: iptables -w -t nat -F sshuttle-12300 ... c : Accept: 192.168.42.121:60554 -> 77.141.99.22:22. ^C c : Keyboard interrupt: exiting. c : SW'unknown':Mux#1: deleting (1 remain) c : SW#7:192.168.42.121:60554: deleting (0 remain) sshuttle /etc/sshuttle.conf: $ sshuttle @/etc/sshuttle.conf /etc/sshuttle.conf : $ sshuttle @/etc/sshuttle.conf -vvv /etc/sshuttle.conf: $ sshuttle @/etc/sshuttle.conf -r otheruser@test.example.com : 192.168.0.0/16 --remote user@example.com (DISCUSSION) sshuttle ssh -r . sshuttle () . sshuttle sshuttle . VPN sshuttle . ( iptables REDIRECT ) TCP TCP . ( tun/tap ) 'tcp over tcp'. tcp tcp tcp ( ssh) tcp tcp . VPN ( IPsec openvpn) tcp ssh ssl . sshuttle ssh . tcp tcp tcp . : ssh(1) python(1) (AUTHORS) Brian May (COPYRIGHT) 2016, Brian May 1.3 December 14, 2025 SSHUTTLE(1)