切换产品
切换语言
主题
把本机的 HTTP / TCP 服务发布到固定公网域名;也能通过 P2P 直连,把远端主机的端口镜像到本地。无需公网 IP,无需改网络拓扑。
cargo install --git https://github.com/zeaphoo/telesh telesh
// 01 — 功能
telesh 同时扮演发布方与访问方:既能把你本地的服务推给公网,也能把远端服务拉到你本地。控制面只传小消息,数据面走独立的 QUIC / yamux 连接。
http_register
把本地 Web 服务发布到固定子域名,服务端自动签发 Let's Encrypt 证书,自带重放与请求日志。
tcp_register
SSH、数据库、游戏服等任意 TCP 服务,映射到服务端的公网端口,无需为此写一行网关代码。
iroh · QUIC
基于 iroh 打洞的 QUIC 连接,流量点对点传输、不经服务端;打洞失败自动回退到加密中继。
lookup + mirror
把远端主机的端口映射到本地监听端口,像访问本机服务一样调试远端环境,支持断线重连。
127.0.0.1:16345
常驻 agent 自动发现本机监听端口,在 127.0.0.1:16345 上按需开关发布、实时查看请求日志。
server.toml
一个 server.toml 启动控制面、数据面与内嵌 iroh relay;支持 ACME、TLS 与 QUIC 地址发现。
// 02 — 工作原理
一条长连接只传小消息(登录、子域、目录、保活),真正的字节走独立的数据面。这样控制协议可以稳定演进,转发路径也能保持原始吞吐。
agent 主动连上服务端,公网流量从边缘入口进来,经独立数据面转发到你的本地端口。
服务端只负责目录查询与令牌校验,真正的载荷走打洞后的 QUIC 直连,不经服务端。
控制面
WebSocket · JSON
登录 / 子域 / 目录 / 保活
数据面
QUIC · yamux
公网转发与 P2P 载荷
授权
短期访问令牌
服务端在线校验,作用域 account/name
// 03 — 场景
只要是「本地和远端之间差一条路」的问题,telesh 都能顺手解决。
把 Stripe / GitHub / 支付回调直接打到本地开发机,实时查看请求头与响应,并一键重放。
用 TCP 隧道把内网 SSH / RDP 暴露到服务端公网端口,出门在外也能连回机器。
给同事或客户一个固定域名,在浏览器里直接看你的本地构建,不必先部署到测试环境。
把测试环境的数据库端口镜像到本地,用熟悉的客户端直连,省去跳板机和端口转发。
把家里的 NAS、媒体库或智能家居以 P2P 方式映射到本地,无需在路由器上做端口转发。
设备主动连上服务端注册,随后你就能反向访问它上面的调试接口与监控页面。
// 04 — 快速开始
命令行只有一个开关(数据目录);要发布什么,全在本地 UI 上点选。
用 cargo 从源码安装,或从 Releases 下载对应平台的单文件二进制。
只需要写一行服务端地址;配置文件不存在时会自动生成一份默认的。
agent 自动发现本机监听端口,在本地 UI 里选择以 HTTP / TCP / P2P 方式发布。
默认固定在 http://127.0.0.1:16345,只监听本机、不对外。
http://127.0.0.1:16345
1 · 安装
# 从源码安装(需要 Rust 1.91+) cargo install --git https://github.com/zeaphoo/telesh telesh
2 · 配置控制面
# 要连的 control server;端口默认 9009 control_server = "tunnel.example.com:9009"
3 · 启动
# 用默认数据目录 ~/.telesh $ telesh info agent starting server=tunnel.example.com:9009 ui=127.0.0.1:16345
想自己托管服务端?见 服务端部署
// 05 — 对比
在「发布到公网」之外,telesh 还多了一条反向路径:把远端端口安全地拉到你本地。
对比基于各自公开文档整理,仅供参考;发现不准确欢迎在 GitHub 上纠正。
// 06 — 常见问题
telesh 既能像 ngrok / frp 一样把本地端口发布到公网,也能反过来把远端端口镜像到你本地。连接上优先走 P2P 打洞直连,打洞失败才回退到加密中继;服务端的控制面与数据面是分开的两条通道。
运行 agent 的那台机器不需要公网 IP,它在 NAT 后面主动连出即可。你只需要一台有公网地址的机器跑 telesh-server,或者使用别人部署好的服务端。
P2P 模式下,载荷走打洞后的 QUIC 直连,不经过服务端;只有在无法建立直连时才会回退到加密中继。HTTP / TCP 公网隧道的流量会经过服务端边缘入口转发。
设备和账号用 Ed25519 密钥对做挑战-应答登录,首次登录即建号(TOFU)。访问某个服务时,服务端签发一个短期的、不透明的访问令牌,作用域限定在 account/name;agent 拿令牌向服务端在线校验。服务端只存令牌哈希,数据面上没有需要保管的密钥。
telesh 用 Rust 编写,是一个无运行时依赖的单文件二进制,可运行在 Linux、macOS 和 Windows 上;在容器里也能直接运行,并且只会发现容器内的端口。
一个常驻 agent 可以同时管理多条隧道:同一个本地端口可以分别以 HTTP、TCP、P2P 发布,也可以声明多条「镜像远端服务」的配置,无需为每个端口各起一个进程。
三条命令跑起来,剩下的都在图形界面里完成。