今年 3 月份,我在 V2EX 分享过自己开发的一个 SSH Tunnel GUI 工具:Loris Tunnel。
最初做这个工具,主要是因为日常开发经常需要在本地访问远程的 MySQL 、ClickHouse 、Redis 等服务,不想在本地再搭建一整套环境。
SSH Tunnel 虽然能解决问题,但管理起来比较麻烦,尤其是网络波动后经常断线,需要手动重启。而且我个人也不太喜欢一直通过 CLI 管理这些连接。
我们有 4~5 个线上数据库要同时链接,只要其中一个 SSHTunnel 忘记运行或者断联,整个服务就会报错,然后就得一个个环节去查,最后发现居然又是 SSH Tunnel 的事情。
所以就自己用 Go + Wails 做了一个桌面工具,支持连接管理、自动重连等功能。
一个意外的反馈:
推荐给同事之后,一个后端同事反馈 Mac 上自从用了这个 Loris Tunnel 之后再也不发烫了,因为 DBeaver 原生的 SSH Tunnel 使用的 Java 写的,性能太差了。
从 1.0 到 2.0
这几个月其实一直在陆陆续续更新,优化了 UI 、连接管理等细节。不过感觉都只是一些小修小补,没什么特别值得拿出来分享的,就没有再发帖占用大家的时间。
直到最近遇到了一个新的需求。
我在本地搭建了 DevSpace,希望在 Codex 额度不足的时候,可以通过 ChatGPT 网页版继续调用本地 DevSpace 。
最开始的方案是找一台海外 VPS ,通过 SSH 反向隧道把本地服务暴露出去。
虽然能用,但 VPS 的速度和延迟一直不太理想,于是开始寻找其他方案。
后来发现微软的 Dev Tunnel 还挺好用:
- 免费使用,不需要自己维护中转服务器,使用的微软的服务器,理论上也没有把自己的数据透露给其他的中间商。
- 域名相对固定,可以复用 Tunnel ID ,不需要额外购买域名,也不像 Cloudflare Quick Tunnel 每次启动都可能变化。
- 延迟表现不错,我这边江苏移动连接 Azure 美西节点,测试延迟大约 200ms ,比之前的 VPS 体验好不少。亚洲节点甚至可以做到 100ms 以内。
Dev Tunnel 好用是好用,但和之前的 SSH Tunnel 一样,还是需要通过命令行管理。
于是干脆让 Codex 帮我升级改造 Loris Tunnel ,把 Dev Tunnel 也集成了进来。
既然 Dev Tunnel 都集成了,想到应该也有不少人在使用 Cloudflare Tunnel 、FRP ,索性一起集成进来。
就这样,Loris Tunnel 从原来的 SSH Tunnel 管理器,变成了现在的 2.0 版本。
2.0 主要支持的功能
目前支持四种 Tunnel 方案:
- SSH Tunnel:本地/远程端口转发、SOCKS5 、多级跳板机。
- Microsoft Dev Tunnel:快速将本地服务分享出去,支持公开和私有访问。
- Cloudflare Tunnel:通过 Cloudflare 网络和自有域名将本地服务暴露到公网。
- FRP:通过自建 frps 服务器实现内网穿透。
这些 Tunnel 都可以在同一个桌面应用中管理,不需要分别操作不同的 CLI 。
另外也保留和完善了自动重连、连接状态监控、日志查看、配置导入等功能。
一些截图:
已经安装了 V2polish 插件,但是不知道为什么以前上传图片是成功的,现在各种尝试都不行
更多截图可以到官网上查看:www.lorisdev.cc
下载与反馈
目前支持 Windows / macOS。
- Windows Store: 点击进入 2.0 版本还在审核中,商店里暂时还是旧版,更新后我会在这里同步。
- GitHub 下载:Loris Tunnel Releases
免费版支持全部四种 Tunnel ,最多同时运行 3 条连接。Pro 主要解除并发数量限制,并提供云端配置备份。
macOS 用户注意:
目前还没有 Apple Developer 签名和公证,首次安装时可能被系统拦截。
可以在「系统设置 → 隐私与安全性」中选择「仍要打开」。
或者确认从官方 GitHub 下载、将应用安装到 Applications 目录后,在终端执行:
sudo xattr -rd com.apple.quarantine /Applications/loris-tunnel.app
目前主要还是根据自己的实际需求在开发,也希望听听 V 友们的建议。
大家平时还会使用哪些 Tunnel 方案?有没有其他值得集成的工具?
欢迎试用 & 交流反馈。
5 个邀请码
V21Y-166C-Y3G1-JRP6
V21Y-UI0F-X7CV-9TQV
V21Y-TWHI-EZJA-DYJ7
V21Y-6MVK-WWNW-C9NU
V21Y-TNQF-Z76Z-QYEJ