logo
1
0
Login
The repository has been archived and is now in read-only mode.
sshtun init

SSH 隧道守护进程(sshtun)

sshtun 是一个轻量级、无界面、支持自动重连的 SSH 隧道守护服务,适用于通过跳板机访问内网资源(如数据库、Web 服务等)场景。

特性功能一览

  • 多 SSH 主机支持

    支持配置多个 SSH 主机实例,每台主机可独立配置转发规则和同步目录,适用于跳板机、中控节点、分布式服务等复杂网络架构。

  • 多隧道端口转发 每个 SSH 主机可配置多个端口映射,支持:

    • 本地端口转发(LocalForward)
      • 远程端口转发(RemoteForward)
      • 动态端口转发(SOCKS5)
      • 可用于数据库访问、内网 API 调试、本地服务远程调用等场景。
  • 本地服务暴露(反向隧道) 可将本地开发服务(如 Web/数据库)映射到远程服务器端口,让远程用户安全访问本地服务,适合内网穿透与 CI/CD 调试。

  • 多种认证方式 支持以下 SSH 登录方式:

    • 用户名 + 密码
    • 私钥登录(支持带 passphrase 的密钥)
    • 自定义私钥路径与 SSH 端口
  • 自动重连机制 连接断开后自动重试,内置指数退避策略,保证隧道持续稳定运行,无需人工干预。

  • 优雅退出与资源清理 监听 Ctrl+C / SIGTERM 等系统信号,自动关闭所有 SSH 连接、端口监听、文件监听器等资源,防止僵尸进程和端口占用。

  • 灵活配置加载

    • 支持通过命令行参数指定配置路径
    • 配置格式采用 YAML,简单易读、便于维护
  • 跨平台兼容性强

    • 完全使用 Go 编写,支持 macOS / Linux / Windows
    • 可结合 systemd、launchctl、Windows 服务等守护进程机制运行
  • 轻量 CLI 工具

    • 无 UI 依赖,可运行于服务器、容器环境
    • 具备友好的日志输出

安装

源码编译安装(适合折腾的你)

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

配置文件格式示例(config.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 -Lssh -R 命令。只需写好配置,sshtun 自动建立隧道,从此专注写代码,连接永不断线。
  • 图形化数据库工具的最佳拍档 使用 Navicat、DBeaver、TablePlus 等工具远程连接 MySQL、PostgreSQL、Redis 等数据库,再也不用临时手动转发端口。
  • 本地 Web 调试丝滑无阻 将你本地跑的服务(如 localhost:3000)映射到远程服务器的端口,远程团队或设备也能直接访问你的调试页面。
  • 掉线自动重连?安排! 无论你是断网、重启、还是 SSH 会话意外终止,sshtun 都会自动尝试重连,最大程度保障服务可用性。
  • 多主机多隧道统一管理 不再为记不清端口映射而头大,所有 SSH 主机与其隧道规则统一配置,开机自启、热重载、统一维护,so easy。
  • 云端部署、家庭 NAS、穿透小能手 适用于:
    • 内网穿透(将内网服务暴露给公网)
      • 从云服务器反向连接本地服务(远程桌面、NAS 文件访问)
      • 跨地域机器互联与日志抓取