应用介绍
sshuttle 是一种“透明代理”式的简易 VPN/隧道工具,基于 SSH 通道将客户端的子网流量转发到远端主机,通常用于快速把内网(如 NAS 所在局域网)桥接到可访问的跳板机。其优势是配置简单、无需服务端特定软件(只需 SSH),但在高并发与复杂路由场景下不如专门的隧道/VPN。
sshuttle 原生以命令行方式运行,虽然并无官方 Docker 镜像,但可通过容器封装在 NAS 上运行,从而以 docker-compose 管理其生命周期。
安装说明
前提依赖
- 可 SSH 访问的公网跳板机(Linux 用户,开放 22 端口)
- 家庭 NAS(Docker 环境)
- 跳板机具备路由到目标内网/或可作为出口访问公网
安装配置
示例:以容器运行 sshuttle,把 NAS 子网流量经 SSH 转发到跳板机。
version: "3.8"
services:
sshuttle:
image: python:3.12-slim
container_name: sshuttle
restart: unless-stopped
network_mode: host
environment:
- SSH_HOST=user@your-cloud-ip-or-domain
- SUBNETS=192.168.1.0/24
entrypoint: ["/bin/sh","-c"]
command: >
"pip install --no-cache-dir sshuttle &&
ssh-keyscan -H your-cloud-ip-or-domain >> /root/.ssh/known_hosts || true &&
sshuttle -r ${SSH_HOST} ${SUBNETS} -D"
volumes:
- ~/.ssh:/root/.ssh:ro
说明:
- 通过挂载宿主机的
~/.ssh,容器可使用已有私钥进行 SSH 免密登录 SUBNETS设置需要转发的网段;亦可仅转发若干主机 CIDR-D以守护进程运行(必要时可移除,便于调试)
使用说明
- 确保 NAS 到跳板机的 SSH 免密已配置(或容器内可交互输入密码,但不推荐)
- 启动容器后,容器日志应显示路由建立成功
- 在 NAS(或同网段设备)访问目标内网地址时,流量将经 SSH 通道转发
- 若需中断,停止容器即可;如需多子网同时转发,可在
SUBNETS中以空格追加