使用 ttyd 将你的终端变成可共享的网页

使用 ttyd 将你的终端变成可共享的网页

您是否曾经需要实时演示您的终端活动,无论是与同事一起排除服务器故障,还是向朋友演示复杂的命令?与其截取屏幕截图或录制屏幕,不如通过一个简单的 Web 链接分享您的实时终端会话,这是多么便捷的体验。这种方法不仅可以增强协作,还可以实时查看您的活动。

Linux 提供了多种终端共享方法,包括 SSH 等传统选项、tmux 和 screen 等工具,以及 asciinema 等屏幕录制实用程序。虽然这些选项可能很有效,但它们通常会带来不必要的复杂性和额外的依赖关系,从而阻碍您的工作流程。

输入ttyd 命令行工具。ttyd 通过将终端转换为 Web 界面来简化终端共享,使任何拥有链接的人都可以访问您的终端,甚至与您的会话进行交互,而无需安装其他软件或配置设置。

ttyd 的主要功能

  • 利用 Libwebsockets 和 libuv 实现卓越的性能。
  • 即使在连接受限的情况下,也可以使用 WebSocket 实现无缝体验。
  • 支持图形化ZMODEM进行文件传输,允许用户直接通过Web浏览器拖放文件。
  • 包括 SSL/TLS 加密以确保安全会话,并提供身份验证选项。
  • 在任何指定端口上运行,并提供在 Raspberry Pi 等设备上部署的兼容性。
  • 具有终端和 Web 界面之间的内置复制/粘贴功能。
  • 能够限制会话管理的并发连接。
  • 在默认的 Web 浏览器中自动打开会话。
  • 启用单客户端访问限制以增强安全性。

如何在 Linux 上安装 ttyd

对于 Debian 或 Ubuntu 用户,您可能会发现默认存储库中没有 ttyd。不过,通过其他方法(例如从源代码构建)仍然可以轻松安装。

首先确保您的系统已完全更新:

sudo apt update && sudo apt upgrade -y

接下来安装编译ttyd所需的依赖项:

sudo apt install -y build-essential cmake git libjson-c-dev libwebsockets-dev

Ttyd工具的安装

从 GitHub 克隆 ttyd 存储库并使用以下命令进行编译:

git clone https://github.com/tsl0922/ttyd.git cd ttyd mkdir build && cd build cmake..make sudo make install

就这些!现在你的系统上已经安装了 ttyd。

对于其他 Linux 发行版,您可以遵循类似的构建指南,或者从 ttyd 的GitHub 发布页面下载预编译的二进制文件。要快速下载,请使用以下 wget 命令:

wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64

使下载的二进制文件可执行:

chmod +x ttyd.x86_64

使用此方法是让 ttyd 在各个 Linux 发行版上运行的最快捷途径之一。您也可以使用通用软件包管理器(例如 Snap)来安装 ttyd:

sudo snap install ttyd --classic

安装 ttyd 后,请输入 来验证您的安装ttyd --version

将你的终端变成可共享的 Web 界面

利用 ttyd 最简单的方法是共享你的默认 shell 会话。执行以下命令:

ttyd bash

此命令将默认在端口 7681 上启动一个 Web 服务器。要访问它,只需打开 Web 浏览器并导航至http://localhost:7681http://your-ip-address:7681

使用 Ttyd 创建的可共享网页

您的终端现在应该可以在网页中看到,任何本地网络用户都可以通过将“localhost”替换为您机器的 IP 地址来访问它。您可以使用ip addr showhostname -I与他人共享来查找您的 IP。

除了共享 Shell 之外,ttyd 还允许您在浏览器中公开其他命令行应用程序。例如,该命令ttyd htop将直接启动htop进程管理器,而ttyd vimttyd top将共享相应的工具。

在网页上打开 Top 命令行工具输出

如果您希望自定义会话的端口号,则可以使用以下标志轻松实现-p

ttyd -p 8080 bash

这使得您的终端可以在端口 8080 上可用,而不是默认的 7681。

为了防止未经授权的访问,ttyd 还通过以下-c选项支持身份验证:

ttyd -c username:password bash

使用 Ttyd 登录终端会话的选项

此配置会提示进行基本的 HTTP 身份验证,确保任何尝试访问您终端的用户都必须输入指定的凭据。虽然更复杂的身份验证更适合生产环境,但此方法对于非正式演示或受信任的网络来说非常有效。

此外,您可以创建一个只读会话,禁止用户进行任何输入:

ttyd -R bash

这对于您希望保持控制的演示或教育环境尤其有利。相反,使用该-W标志进行可写和交互式会话:

ttyd -W bash

互联网上的安全共享

在互联网上共享终端时,实施加密至关重要。ttyd 使用您自己的 SSL 证书提供 HTTPS 支持。如果您没有 SSL 证书,可以使用 OpenSSL 创建自签名证书以进行测试;但对于生产用途,建议使用受信任的证书颁发机构,例如 Let’s Encrypt。

虽然 ttyd 默认只能在本地网络上访问,但通常需要将此访问权限扩展到外部。您可以通过多种方法安全地实现此目的。最简单的方法之一是将 ttyd 与 Tailscale 或Cloudflare Tunnel等隧道服务集成,这些服务可以通过临时的公共 URL 安全地将您的本地端口在互联网上可用。或者,您可以将 ttyd 托管在具有域名的 VPS 或云服务器上,从而实现永久的 HTTPS 访问。

对于更高级的配置,您可以将 ttyd 单独绑定到 localhost,并将其置于 Nginx 或 Caddy 等反向代理之后。此设置可以处理 SSL 终止、身份验证和详细的访问控制。

结论

有了 ttyd,复杂的终端共享过程就变成了简单的任务,类似于共享超链接。

来源和图片

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注