跳到主要内容
项目档案命令行工具

tty2web 终端共享工具:将命令行转为 Web 应用,支持 bind/reverse 模式与 DNS 隧道安装使用指南

tty2web 是一个开源工具,可将本地终端会话通过浏览器实时访问,支持 bind/reverse 连接、DNS 隧道、文件传输和 API 执行。本页提供详细安装方法、使用示例、功能说明及架构解析,帮助您快速掌握这一远程终端解决方案。

160GoStar 于 2026年4月13日2026年9月8日 更新

AI 总结

tty2web 是一个基于 Gotty 改进的开源命令行工具,可将本地终端会话通过浏览器实时访问,支持 bind/reverse 连接、DNS 隧道、双向文件传输及 API 执行,适用于远程管理、渗透测试和 NAT 穿透等场景。

中文项目介绍

tty2web 是一个简单而强大的命令行工具,旨在将本地运行的终端命令转化为可通过 Web 浏览器访问的交互式应用。它基于知名的 Gotty 项目进行了深度改进,增加了许多企业级和渗透测试场景下必需的功能。 该项目主要解决远程终端访问中的常见痛点:在缺乏 SSH 或防火墙限制的环境下,如何安全、便捷地共享终端会话;如何在 NAT 穿透场景中建立双向连接;以及如何通过受限网络(如仅允许 DNS 流量)执行命令。传统方案往往依赖复杂配置或专用软件,而 tty2web 提供了一键式 Web 化方案。 适用场景广泛:远程服务器管理(通过浏览器直接操作 Linux/Windows 服务器命令行)、渗透测试与红队行动(利用 reverse shell 和 SOCKS5 代理进行内网渗透)、临时技术协作(共享终端进行代码审查或故障排查)、以及受限网络环境下的命令执行(通过 DNS 隧道)。此外,其双向文件传输和 API 执行能力进一步扩展了实用性。 技术实现上,tty2web 采用 Go 语言开发,前端基于 xterm.js 提供逼真的终端体验。核心架构包括本地 PTY 管理、WebSocket 双向通信、HTTP 服务器及多种连接模式(bind、reverse、DNS)。项目支持 Windows(含 ConPTY)和 Unix-like 系统,并通过模块化设计保持可维护性。配置可通过命令行标志或配置文件(默认 ~/.tty2web)进行灵活调整。

详细信息与使用说明

1. 项目定位与核心用途

tty2web 是一个开源命令行工具,设计目标是将本地终端命令实时转换为 Web 应用,使用户能通过浏览器访问交互式终端会话。它继承自 Gotty 但进行了大幅增强,专注于提供简单、高效且功能丰富的远程终端共享方案,适用于开发、运维和安全测试等多种领域。工具通过 WebSocket 实现终端数据的双向流式传输,并结合 xterm.js 在前端渲染完整的终端体验。

2. 解决的关键问题

项目主要解决远程终端访问中的三大挑战:一是网络限制下的连接建立,通过 bind/reverse 模式实现 NAT 穿透和防火墙绕过,使客户端能主动连接或被动接收连接;二是环境约束下的命令执行,利用 DNS 隧道在仅允许 DNS 流量的网络中建立通信通道;三是协作与文件交换需求,提供双向文件传输(下载/上传)和 API 执行能力,避免依赖额外工具如 SCP 或 SSH,简化工作流程。

3. 典型适用场景

常见使用场景包括:远程服务器管理(通过浏览器直接操作命令行,无需 SSH 客户端);渗透测试与红队行动(利用 reverse shell 和 SOCKS5 代理进行内网渗透与横向移动);临时技术协作(共享终端会话进行联合调试或教学演示);以及受限网络环境下的命令执行(如企业防火墙仅开放 DNS 端口时)。此外,API 模式允许程序化执行命令,适合集成到自动化运维系统。

4. 安装指南

tty2web 提供三种安装方式:一是从 GitHub Releases 页面下载预编译的二进制文件(推荐生产使用,选择 Latest release 版本,注意 darwin_amd64 为 macOS 版本);二是通过 Go 环境安装:克隆仓库后执行 `go install`(需 Go 1.18+,因使用 fork 的 pty 模块需先 checkout 源码);三是使用 Makefile 构建:运行 `make tools` 后 `make tty2web`。Windows 用户需下载支持 ConPTY 的版本。

5. 基本使用与命令选项

基本用法为 `tty2web <command>`,默认监听 0.0.0.0:8080 并提供 Web 界面。Bind 模式:`tty2web --port 8081 top`,浏览器访问 IP:8081;添加 `-w` 允许浏览器写入终端。Reverse 模式:先启动监听 `tty2web --listen :4444 --server 127.0.0.1:8000`,再在目标机连接 `tty2web --connect <监听IP>:4444 -w /bin/sh`,最后访问 http://127.0.0.1:8000。其他选项:`--api` 启用命令 API,`--regeorg` 启用 SOCKS5 代理,`--all` 开启全部特性,`--credential` 设置基础认证。

6. 补充说明与实现特点

项目支持 DNS 隧道(需自有域名),通过 `--dns` 和 `--dns-listen` 启用。配置可通过环境变量或文件(默认 ~/.tty2web)覆盖默认值。前端资源嵌入在二进制中(bindata),便于单文件分发。安全方面,`--permit-write`、`--api` 等选项赋予远程完整控制权,需谨慎使用并建议配合认证。代码结构清晰:main.go 处理 CLI 路由,server 模块提供 HTTP/WebSocket 服务,webtty 实现终端协议,backend/localcommand 管理 PTY,rdns 处理 DNS 隧道。依赖包括 gorilla/websocket、pty(fork 版本)等。

思维导图

tty2web 项目结构
backend
localcommand (PTY管理/跨平台)
server
HTTP/WebSocket服务器
认证/中间件
反向连接处理
webtty
协议实现 (Master/Slave)
消息编解码
rdns
DNS隧道支持
rserver
反向监听器
utils
配置与标志处理
js (前端)
xterm.js 集成
WebSocket 客户端
pkg
homedir (路径扩展)
randomstring (生成)

常见问题

如何安装 tty2web?

提供三种方式:从 GitHub Releases 下载最新稳定版二进制文件(推荐);使用 Go 安装:克隆仓库后执行 `go install`(需 Go 1.18+);或通过 Makefile 构建:运行 `make tools` 后 `make tty2web`。Windows 用户请选择对应平台版本。

如何使用 reverse 模式建立连接?

reverse 模式需两步:首先在监听方运行 `tty2web --listen :4444 --server 127.0.0.1:8000` 启动监听;然后在目标机运行 `tty2web --connect <监听IP>:4444 -w /bin/sh` 发起连接;最后在浏览器访问 http://127.0.0.1:8000 即可看到终端。

DNS 隧道功能如何使用?

DNS 隧道需要您控制一个(子)域名,并通过 `--dns` 指定域名、`--dns-listen` 指定监听地址来启用。具体参数用法未在 README 中详述,但该功能基于 github.com/kost/dnstun 库实现,允许在仅开放 DNS 端口的网络中传输数据。

使用 `--permit-write` 或 `--api` 选项安全吗?

这些选项赋予远程用户直接写入终端或执行任意命令的权限,存在较高安全风险。建议仅在可信网络环境中使用,并务必配合 `--credential` 设置基本认证,或通过防火墙限制访问来源。生产环境应谨慎评估。

tty2web 支持 Windows 系统吗?

支持。项目明确包含 Windows 后端实现(backend/local_command_windows.go)并支持 ConPTY(Windows 10+ 的现代终端模拟器接口)。Windows 用户可从 Releases 页面下载对应版本二进制文件使用。