sshtun 是一个轻量级、无界面、支持自动重连的 SSH 隧道守护服务,适用于通过跳板机访问内网资源(如数据库、Web
服务等)场景。
支持配置多个 SSH 主机实例,每台主机可独立配置转发规则和同步目录,适用于跳板机、中控节点、分布式服务等复杂网络架构。
多隧道端口转发 每个 SSH 主机可配置多个端口映射,支持:
本地服务暴露(反向隧道) 可将本地开发服务(如 Web/数据库)映射到远程服务器端口,让远程用户安全访问本地服务,适合内网穿透与 CI/CD 调试。
多种认证方式 支持以下 SSH 登录方式:
自动重连机制 连接断开后自动重试,内置指数退避策略,保证隧道持续稳定运行,无需人工干预。
优雅退出与资源清理 监听 Ctrl+C / SIGTERM 等系统信号,自动关闭所有 SSH 连接、端口监听、文件监听器等资源,防止僵尸进程和端口占用。
灵活配置加载
跨平台兼容性强
轻量 CLI 工具
源码编译安装(适合折腾的你)
git clone https://cnb.cool/zhiqiangwang/sshtun
cd sshtun && make build
使用shell进行在线安装
curl -sSL https://cnb.cool/zhiqiangwang/sshtun/-/git/raw/main/install.sh | bash
使用brew进行安装
brew tap zhiqiangwang/soft https://cnb.cool/zhiqiangwang/homebrew-soft brew install zhiqiangwang/soft/sshtun //配置文件 /opt/homebrew/etc/sshtun/config.yaml //日志 /opt/homebrew/var/log/sshtun.log //services brew services start sshtun brew services reload sshtun
默认使用
默认配置
config.yaml,~/.ssh/sshtun.yaml,/etc/sshtun.yaml
./sshtun
指定配置
./sshtun --config /path/to/your.yaml
# ✅ SSH客户端连接配置:支持多个远程服务器
ssh:
- name: serverA # 唯一标识符,后续在隧道和反向隧道中引用
user: root # SSH登录用户名
host: 127.0.0.1 # SSH主机地址(可以是IP或域名)
port: 8022 # SSH端口(默认22,可以自定义)
password: "123456" # 密码认证(可以替代私钥认证)
# 🔐 私钥认证(可选,如果使用私钥认证则不需要password)
# private_key: ~/.ssh/id_rsa # 私钥文件路径(支持~)
# private_key: | # 或者直接粘贴PEM格式的私钥(支持多种类型)
# <your-private-key-content>
# passphrase: "your_key_passphrase" # 如果私钥有密码短语,则提供密码
# ✅ 本地隧道配置:本地端口转发 ➜ 远程服务器(等同于 ssh -L)
local:
- ssh: serverA # 使用的SSH客户端(与上面配置的名称匹配)
local: 127.0.0.1:8888 # 本地监听地址(访问此端口进行转发)
remote: 127.0.0.1:80 # 转发的目标地址(远程服务端口,例如nginx)
# ✅ 反向隧道配置:远程端口转发 ➜ 本地服务(等同于 ssh -R)
remote:
- ssh: serverA
local: 127.0.0.1:8080 # 本地服务地址(本机上运行的服务)
remote: 127.0.0.1:8088 # 远程服务器监听端口(可外部访问)
ssh -L、ssh -R 命令。只需写好配置,sshtun 自动建立隧道,从此专注写代码,连接永不断线。localhost:3000)映射到远程服务器的端口,远程团队或设备也能直接访问你的调试页面。sshtun 都会自动尝试重连,最大程度保障服务可用性。