更新时间:2023-04-17 09:21:37浏览次数:976+次
本文介绍如何在Linux系统上安装和使用ttyd以能够在网络上共享Linux终端命令行,适用在Debian、Ubuntu、Fedora等Linux发行版上。ttyd是一个基于web的终端模拟器和交互式shell,允许用户从web浏览器访问Linux命令行界面(CLI),它使用WebSocket协议在浏览器和Linux终端之间提供实时连接。ttyd的优点之一是它不需要在客户端安装任何额外的软件,因为它完全在web浏览器中运行,这使它成为远程系统管理和故障排除的方便工具。
在Linux系统上安装ttyd
ttyd是一个跨平台的应用程序。这意味着它可以很容易地安装在Linux、FreeBSD/OpenBSD、OpenWrt、macOS和Windows系统上。在本指南中,我将演示如何将其安装在Linux系统上。
在Linux系统上安装ttyd有三种方法,下面分别介绍。
1、使用二进制文件
首先从发布页面中提取最新的二进制文件,下载地址在https://github.com/tsl0922/ttyd/releases。截至本指南,最新版本为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
下载后,将文件移动到您的PATH:
sudo mv ttyd.* /usr/local/bin/ttyd
sudo chmod +x /usr/local/bin/ttyd
2、使用snap
在Linux上安装ttyd的另一个方法是使用snap,可参考在Fedora 37系统上安装Snapd和Snap应用程序的方法,地址在https://www.hmxthome.com/linux/5022.html。一旦安装并运行了snap,就可以执行以下命令来安装ttyd:
sudo snap install ttyd --classic
3、从源构建
在Linux上安装ttyd的另一种方法是从源代码构建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
注:如果是在macOS上安装ttyd,可运行brew install ttyd或sudo port install ttyd命令来安装。
使用ttyd通过Web访问终端命令行
安装后,有几个命令可以与ttyd一起使用。首先,使用以下命令验证安装:
$ ttyd -v
ttyd version 1.7.3-a8cae75
ttyd默认情况下在7681端口上启动一个web服务器。但是,您可以将所需的端口设置为与-p参数一起使用。例如,在8080端口上启动ttyd,命令是:
$ ttyd -p 8080 bash
N: ttyd 1.7.3-a8cae75 (libwebsockets 4.3.2-unknown)
N: tty configuration:
N: start command: bash
N: close signal: SIGHUP (1)
N: terminal type: xterm-256color
N: lws_create_context: LWS: 4.3.2-unknown, NET SRV H1 WS MbedTLS ConMon IPV6-off
N: elops_init_pt_uv: Using foreign event loop...
N: __lws_lc_tag: ++ [wsi|0|pipe] (1)
N: __lws_lc_tag: ++ [vh|0|netlink] (1)
N: __lws_lc_tag: ++ [vh|1|default||8080] (2)
N: [vh|1|default||8080]: lws_socket_bind: source ads 0.0.0.0
N: __lws_lc_tag: ++ [wsi|1|listen|default||8080] (2)
N: Listening on port: 8080
N: __lws_lc_tag: ++ [wsisrv|0|adopted] (1)
N: HTTP / - 192.168.205.1
N: HTTP /token - 192.168.205.1
现在使用URL通过浏览器访问ttyd,地址格式是http://IP_Address:8080,如下图:
现在,要为终端添加保护,您可以在web浏览器上使用您的系统帐户登录,如下所示:
$ sudo ttyd login
N: ttyd 1.7.3-a8cae75 (libwebsockets 4.3.2-unknown)
N: tty configuration:
N: start command: login
N: close signal: SIGHUP (1)
N: terminal type: xterm-256color
N: lws_create_context: LWS: 4.3.2-unknown, NET SRV H1 WS MbedTLS ConMon IPV6-off
N: elops_init_pt_uv: Using foreign event loop...
N: __lws_lc_tag: ++ [wsi|0|pipe] (1)
N: __lws_lc_tag: ++ [vh|0|netlink] (1)
N: __lws_lc_tag: ++ [vh|1|default||7681] (2)
N: [vh|1|default||7681]: lws_socket_bind: source ads 0.0.0.0
N: __lws_lc_tag: ++ [wsi|1|listen|default||7681] (2)
N: Listening on port: 7681
现在使用默认端口访问ttyd,地址格式是http://IP_Address:7681,如下图:
还有其他几个命令和参数可供使用,有关帮助,请使用以下命令:
$ ttyd -help
用法:ttyd [options] <command> [<arguments...>]
注:ttyd [选项] <命令> [<参数...>]
在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
最后,您可以使用以下命令重新启动服务:
sudo systemctl restart ttyd
至此,在Linux系统上创建ttyd Systemd服务完成。这说明,从现在起,您可以从浏览器访问网络中的任何位置的Linux shell。