如何使用 ttyd 通过网络共享您的 Linux 终端
Linux 终端,最好称为命令行界面或shell,是一种基于文本的界面,用于与 Linux 操作系统交互。它允许用户向计算机发出命令并接收基于文本的响应。它还提供了一组强大的工具和实用程序,可用于管理和自定义 Linux 系统。
Linux 终端是高度可定制的,可以根据个人用户的需求进行配置。它支持广泛的命令和实用程序,可用于执行文件管理、网络、软件安装和系统管理等任务。
大多数 Linux 用户更喜欢终端而不是图形用户界面 (GUI),因为它提供了更多的控制和灵活性。然而,它确实需要一些 Linux 命令和语法知识,这对初学者来说可能具有挑战性。通过实践和经验,用户可以熟练使用终端,并可以利用其强大的功能来有效地管理他们的 Linux 系统。
Linux 终端仿真器是允许用户在图形环境中与 Linux 命令行界面 (CLI) 进行交互的软件应用程序。最流行的终端模拟器是 GNOME Terminal、Konsole、Terminator、Tilix、Xfce Terminal 等
今天我将演示如何使用 ttyd 通过 Web 共享 Linux 终端。
ttyd是什么?
ttyd 是一个基于 Web 的终端仿真器和交互式 shell,允许用户从 Web 浏览器访问 Linux 命令行界面 (CLI)。它使用WebSocket协议提供浏览器和Linux终端之间的实时连接。
这个轻量级且易于使用的工具可用于访问远程 Linux 系统或提供对本地 Linux 系统的远程访问。它同时支持多个客户端,允许多个用户连接到同一会话。 ttyd 的优点之一是它不需要在客户端安装任何额外的软件,因为它完全在 Web 浏览器中运行。这使其成为远程系统管理和故障排除的便捷工具。
与 ttyd 相关的其他功能和优点包括:
- 基于 OpenSSL/Mbed TLS 的 SSL 支持
- ZMODEM (lrzsz)/trzsz 文件传输支持
- 支持 CJK 和 IME 的全功能终端
- 构建在 libuv 和 WebGL2 之上以提高速度
- Sixel 图像输出支持 (img2sixel/lsix)
- 运行带有选项的任何自定义命令
- 基本身份验证支持和许多其他自定义选项
- 可以安装在 Linux、FreeBSD/OpenBSD、OpenWrt、macOS 和 Windows 系统上的开源软件。它还可以作为命令行工具或 Docker 容器使用。
让我们深入了解一下!
#1.在您的系统上安装 ttyd
ttyd 是一个跨平台应用程序。这意味着它可以轻松安装在 Linux、FreeBSD/OpenBSD、OpenWrt、macOS 和 Windows 系统上。在本指南中,我将演示如何将其安装在:
- 苹果系统
- Linux
- 视窗
A。在 Linux 上安装 ttyd
在 Linux 系统上安装 ttyd 有三种方法。
- 使用二进制文件
这是所有方法中最简单的方法。它涉及从发布页面提取最新的二进制文件。截至本指南,最新版本为1.7.3。所以导出版本。
VER=$( curl --silent "https://api.github.com/repos/tsl0922/ttyd/releases/latest"| grep '"tag_name"'|sed -E 's/.*"([^"]+)".*/\1/')
现在拉取二进制文件:
##For 64-bit
curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.x86_64
##For aarch64
curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.aarch64
##For arm
curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.arm
##For i686
curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.i686
下载后,将文件移动到您的路径:
sudo mv ttyd.* /usr/local/bin/ttyd
sudo chmod +x /usr/local/bin/ttyd
- 使用快照
在 Linux 上安装 ttyd 的另一个选项是使用 snap。安装并运行 snap 后,您可以执行以下命令来安装 ttyd:
sudo snap install ttyd --classic
- 从源代码构建
在 Linux 上安装 ttyd 的另一种方法是从源代码构建它。在 Debian/Ubuntu 上,使用命令:
sudo apt-get install build-essential cmake git libjson-c-dev libwebsockets-dev
git clone https://github.com/tsl0922/ttyd.git
cd ttyd && mkdir build && cd build
cmake ..
make && sudo make install
b.在 macOS 上安装 ttyd
ttyd 可以使用两种方法安装在 MacOS 上。
- 使用 HomeBrew
执行此操作的命令是:
brew install ttyd
- 使用 MacPorts
使用以下命令:
sudo port install ttyd
C。在 Windows 上安装 ttyd
您可以使用以下方法在 Windows 上安装 ttyd:
- 使用勺子
在 Windows 系统上安装 scoop 后,您可以使用以下命令安装 ttyd:
scoop install ttyd
- 使用二进制文件
您还可以下载适用于 Windows 的二进制文件。这可以通过访问发布页面来实现。下载二进制文件后,双击 .EXE 文件进行安装。
#2.使用 ttyd 通过 Web 访问终端
安装后,您可以在 ttyd 中使用多个命令。首先,使用以下命令验证安装:
$ ttyd -v
ttyd version 1.7.3-a8cae75
默认情况下,ttyd 在端口 7681 上启动 Web 服务器。但是,您可以通过 -p 标志设置要使用的所需端口。例如,在端口 8080 上启动 ttyd,命令将为:
$ ttyd -p 8080 bash
[2023/03/03 13:27:56:2786] N: ttyd 1.7.3-a8cae75 (libwebsockets 4.3.2-unknown)
[2023/03/03 13:27:56:2786] N: tty configuration:
[2023/03/03 13:27:56:2786] N: start command: bash
[2023/03/03 13:27:56:2786] N: close signal: SIGHUP (1)
[2023/03/03 13:27:56:2786] N: terminal type: xterm-256color
[2023/03/03 13:27:56:2787] N: lws_create_context: LWS: 4.3.2-unknown, NET SRV H1 WS MbedTLS ConMon IPV6-off
[2023/03/03 13:27:56:2787] N: elops_init_pt_uv: Using foreign event loop...
[2023/03/03 13:27:56:2788] N: __lws_lc_tag: ++ [wsi|0|pipe] (1)
[2023/03/03 13:27:56:2788] N: __lws_lc_tag: ++ [vh|0|netlink] (1)
[2023/03/03 13:27:56:2788] N: __lws_lc_tag: ++ [vh|1|default||8080] (2)
[2023/03/03 13:27:56:2789] N: [vh|1|default||8080]: lws_socket_bind: source ads 0.0.0.0
[2023/03/03 13:27:56:2789] N: __lws_lc_tag: ++ [wsi|1|listen|default||8080] (2)
[2023/03/03 13:27:56:2789] N: Listening on port: 8080
[2023/03/03 13:28:23:6599] N: __lws_lc_tag: ++ [wsisrv|0|adopted] (1)
[2023/03/03 13:28:23:6604] N: HTTP / - 192.168.205.1
[2023/03/03 13:28:24:6584] N: HTTP /token - 192.168.205.1
......
现在通过浏览器使用 URL http://IP_Address:8080 访问 ttyd。
现在,要为终端添加保护,您可以使用登录标志允许在 Web 浏览器上使用您的系统帐户登录,如下所示:
$ sudo ttyd login
[2023/03/03 13:44:36:3963] N: ttyd 1.7.3-a8cae75 (libwebsockets 4.3.2-unknown)
[2023/03/03 13:44:36:3965] N: tty configuration:
[2023/03/03 13:44:36:3967] N: start command: login
[2023/03/03 13:44:36:3971] N: close signal: SIGHUP (1)
[2023/03/03 13:44:36:3973] N: terminal type: xterm-256color
[2023/03/03 13:44:36:3974] N: lws_create_context: LWS: 4.3.2-unknown, NET SRV H1 WS MbedTLS ConMon IPV6-off
[2023/03/03 13:44:36:3975] N: elops_init_pt_uv: Using foreign event loop...
[2023/03/03 13:44:36:3976] N: __lws_lc_tag: ++ [wsi|0|pipe] (1)
[2023/03/03 13:44:36:3977] N: __lws_lc_tag: ++ [vh|0|netlink] (1)
[2023/03/03 13:44:36:3977] N: __lws_lc_tag: ++ [vh|1|default||7681] (2)
[2023/03/03 13:44:36:3978] N: [vh|1|default||7681]: lws_socket_bind: source ads 0.0.0.0
[2023/03/03 13:44:36:3979] N: __lws_lc_tag: ++ [wsi|1|listen|default||7681] (2)
[2023/03/03 13:44:36:3979] N: Listening on port: 7681
..
现在使用默认端口 http://IP_Address:7681 访问 ttyd
使用系统上的系统信用登录以访问终端。还有其他几个命令和标志可供使用。如需帮助,请使用:
$ ttyd -help
ttyd is a tool for sharing terminal over the web
USAGE:
ttyd [options] <command> [<arguments...>]
VERSION:
1.7.3-a8cae75
OPTIONS:
-p, --port Port to listen (default: 7681, use `0` for random port)
-i, --interface Network interface to bind (eg: eth0), or UNIX domain socket path (eg: /var/run/ttyd.sock)
-U, --socket-owner User owner of the UNIX domain socket file, when enabled (eg: user:group)
-c, --credential Credential for basic authentication (format: username:password)
-H, --auth-header HTTP Header name for auth proxy, this will configure ttyd to let a HTTP reverse proxy handle authentication
-u, --uid User id to run with
-g, --gid Group id to run with
-s, --signal Signal to send to the command when exit it (default: 1, SIGHUP)
-w, --cwd Working directory to be set for the child program
-a, --url-arg Allow client to send command line arguments in URL (eg: http://localhost:7681?arg=foo&arg=bar)
-R, --readonly Do not allow clients to write to the TTY
-t, --client-option Send option to client (format: key=value), repeat to add more options
-T, --terminal-type Terminal type to report, default: xterm-256color
-O, --check-origin Do not allow websocket connection from different origin
-m, --max-clients Maximum clients to support (default: 0, no limit)
-o, --once Accept only one client and exit on disconnection
-B, --browser Open terminal with the default system browser
-I, --index Custom index.html path
-b, --base-path Expected base path for requests coming from a reverse proxy (eg: /mounted/here, max length: 128)
-P, --ping-interval Websocket ping interval(sec) (default: 5)
-6, --ipv6 Enable IPv6 support
-S, --ssl Enable SSL
-C, --ssl-cert SSL certificate file path
-K, --ssl-key SSL key file path
-A, --ssl-ca SSL CA file path for client certificate verification
-d, --debug Set log level (default: 7)
-v, --version Print the version and exit
-h, --help Print this text and exit
Visit https://github.com/tsl0922/ttyd to get more information and report bugs.
#3。在 Linux 上创建 ttyd Systemd 服务
现在,您可以创建一个系统服务,可以像任何其他系统服务一样更轻松地启动、启用和停止该服务。
创建系统服务文件:
sudo vim /etc/systemd/system/ttyd.service
添加以下行:
[Unit]
Description=ttyd_ComputingforGeeks.com
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/bash -c "ttyd login"
Restart=always
RestartSec=2
TimeoutStopSec=5
SyslogIdentifier=ttyd
[Install]
WantedBy=multi-user.target
重新加载系统守护进程:
sudo systemctl daemon-reload
不停止默认端口 7681 上运行的任何服务:
sudo killall -9 ttyd
停止后,使用以下命令启动服务:
sudo systemctl start ttyd
启用该服务在系统启动时运行:
sudo systemctl enable ttyd
检查服务的状态:
$ systemctl status ttyd
● ttyd.service - ttyd_ComputingforGeeks.com
Loaded: loaded (/etc/systemd/system/ttyd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-03-03 13:57:18 EAT; 23s ago
Main PID: 125928 (ttyd)
Tasks: 1 (limit: 4575)
Memory: 176.0K
CGroup: /system.slice/ttyd.service
└─125928 ttyd login
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2937] N: close signal: SIGHUP (1)
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2938] N: terminal type: xterm-256color
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2939] N: lws_create_context: LWS: 4.3.2-unknown, NET SRV H1 WS MbedTLS ConMon IPV6-off
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2940] N: elops_init_pt_uv: Using foreign event loop...
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2941] N: __lws_lc_tag: ++ [wsi|0|pipe] (1)
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2942] N: __lws_lc_tag: ++ [vh|0|netlink] (1)
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2943] N: __lws_lc_tag: ++ [vh|1|default||7681] (2)
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2944] N: [vh|1|default||7681]: lws_socket_bind: source ads 0.0.0.0
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2945] N: __lws_lc_tag: ++ [wsi|1|listen|default||7681] (2)
Bit 03 13:57:18 computingforgeeks.com ttyd[125928]: [2023/03/03 13:57:18:2946] N: Listening on port: 7681
您可以使用以下命令重新启动服务:
sudo systemctl restart ttyd
判决
这标志着本关于如何使用 ttyd 通过 Web 共享 Linux 终端的指南的结束。现在,您可以从网络中的任何位置通过浏览器访问 Linux shell。我希望这可以帮到你。
相关文章:
- 如何使用 Wetty 在 Web 浏览器上运行 Linux 终端
- 使用 theme.sh 轻松更改 Linux/macOS 终端主题
- 10 个最佳 Linux 终端模拟器
- 在 Ubuntu/Debian 上安装 Tilix GTK3 平铺终端模拟器