在开发、运维或技术演示中,我们经常遇到这样的需求:想让同事快速查看某个服务器的实时日志,或者想在浏览器里直接运行一个简单的 Shell 脚本,而无需配置复杂的 SSH 权限或安装远程桌面。
Gotty 正是为了解决这个问题而生的。它是一个用 Go 语言编写的工具,能够将你的终端(TTY)直接转化为一个可以通过 HTTP 访问的网页。简单来说,它把你的命令行界面“直播”到了浏览器中。
🚀 Gotty 是什么?
Gotty (Go TTY) 是一个轻量级的代理服务器,它将本地的终端会话映射到 HTTP 端口。这意味着任何能够访问该端口的人,都可以通过浏览器与你的终端进行交互。
核心特性:- 零客户端安装:访问者只需要一个浏览器,无需安装 SSH 客户端。 - 实时交互:基于 WebSocket 实现,输入输出几乎无延迟。 - 灵活配置:支持只读模式、权限控制、自定义命令。 - 跨平台:得益于 Go 语言,支持 Linux, macOS 和 Windows。
🛠️ 安装指南
由于 Gotty 是用 Go 编写的,你可以通过多种方式安装:
1. 使用 Go 安装(推荐)
如果你已经安装了 Go 环境:
go install github.com/yudai/gotty@latest
2. 下载预编译二进制文件
访问 Gotty Releases 页面,下载对应操作系统的二进制文件,解压后赋予执行权限即可:
chmod +x gotty sudo mv gotty /usr/local/bin/
📖 基础使用实例
场景一:最简单的共享终端
如果你想快速分享当前的 Shell 环境,直接运行:
gotty
默认情况下,Gotty 会在 12601 端口启动。打开浏览器访问 http://localhost:12601,你就能看到一个可以操作的终端。
场景二:运行特定命令(如实时监控)
如果你不希望用户操作整个系统,而只想让他们看某个命令的输出(例如 htop 或 tail -f),可以指定命令:
gotty htop
此时,用户进入网页后只能看到 htop 的界面。
场景三:设置只读模式(安全关键!)
在公开环境下,绝对不能给用户写权限。使用 -w 参数可以开启只读模式:
gotty -w top
用户可以看到 top 命令的实时刷新,但无法输入任何指令,无法删除你的文件。
场景四:自定义端口与绑定地址
为了在公网访问,你可以指定端口和监听地址:
gotty -p 8080 -l 0.0.0.0 bash
-p 8080: 将端口改为 8080。-l 0.0.0.0: 允许所有 IP 访问。
🛡️ 进阶实战:构建一个“在线 API 文档/演示环境”
假设你写了一个命令行工具 my-tool,想让用户在不安装的情况下试用。你可以通过以下组合命令实现:
gotty -w -p 8080 --title "MyTool Online Demo" "./my-tool --help"
参数解析:- -w: 只读,防止用户恶意操作。
- --title: 在浏览器标签页显示自定义标题。
- ./my-tool --help: 启动时直接运行帮助文档,给用户第一印象。
⚠️ 重要安全警告(必读)
Gotty 赋予了浏览器直接操作系统的能力,如果配置不当,等同于将你的服务器 Root 权限公开在互联网上。
在使用 Gotty 时,请务必遵循以下安全建议:
绝对不要在公网环境下运行
gotty bash且不带密码/只读限制。 任何人都可以通过rm -rf /摧毁你的系统。优先使用只读模式 (
-w)。配合反向代理 (Nginx/Caddy): 不要直接暴露 Gotty 端口,建议在前面加一层 Nginx,并配置
auth_basic(基础认证) 或 IP 白名单。textlocation /terminal { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:12601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }使用 Docker 隔离: 在 Docker 容器中运行 Gotty,即使被攻击,影响范围也仅限于容器内部。
⚖️ Gotty vs SSH
| 特性 | SSH | Gotty |
|---|---|---|
| 客户端 | 需要 SSH 客户端 (Putty, iTerm2) | 任何现代浏览器 |
| 配置难度 | 需要配置密钥/密码、开放 22 端口 | 运行一个命令即可 |
| 权限控制 | 细粒度用户权限管理 | 较简单(全开或只读) |
| 适用场景 | 长期、专业的远程管理 | 临时演示、快速监控、轻量级分享 |
总结
Gotty 是一个将“命令行”转化为“Web 服务”的绝佳工具。它极大地降低了他人访问你终端环境的门槛。无论是用于内部运维的实时看板,还是开源项目的交互式 Demo,Gotty 都能提供极简的解决方案。
记住:便捷与安全是天平的两端,请务必在开启写权限前做好防护!



还没有评论,来说两句吧...