更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux命令 > 在Linux上安装和使用ttyd以在网络上共享Linux命令行

在Linux上安装和使用ttyd以在网络上共享Linux命令行

更新时间:2023-04-17 09:21:37浏览次数:839+次

本文介绍如何在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。