如何在Web浏览器中共享Linux终端会话

时间:2020-02-23 14:31:00  来源:igfitidea点击:

我们要在Web浏览器中共享Linux终端会话吗? GoTTY是专门编写的小型Go应用程序,使我们可以将CLI工具转换为Web应用程序。借助GoTTY,远程用户可以查看通过网络连接显示在Web浏览器上的终端应用程序。

在Linux上安装GoTTY

GoTTY作为二进制软件包分发。使用curl,wget或者从Web浏览器手动从"发布"页面下载最新的稳定二进制文件。在撰写本文时,最新版本是v1.0.1

export VER="1.0.1"
cd /tmp
wget https://github.com/yudai/gotty/releases/download/v${VER}/gotty_linux_amd64.tar.gz

解压缩下载的文件。

tar xvf gotty_linux_amd64.tar.gz

给二进制文件执行位,然后将其移至$PATH文件夹中。

chmod  +x gotty
sudo mv gotty /usr/local/bin/

我们应该能够检查Gotty版本。

$gotty -version
gotty version 1.0.1

使用Gotty在Web浏览器中共享Linux终端

一旦安装了Gotty,我们可以使用--help选项检查其用法。

$gotty --help

通用语法为:

$gotty [options] <command> [<arguments...>]

下面的示例将显示Linux系统作为Web应用程序的内存和CPU利用率。我正在使用htop,可以使用以下命令将其安装在Ubuntu/Debian系统上:

sudo apt install -y htop

然后运行:

$gotty  htop
2019/01/17 16:07:29 Server is starting with command: htop
2019/01/17 16:07:29 URL: http://127.0.0.1:8080/
2019/01/17 16:07:29 URL: http://[::1]:8080/
2019/01/17 16:07:29 URL: http://192.168.100.27:8080/
2019/01/17 16:07:29 URL: http://[fe80::fa2e:617f:c315:6983]:8080/
2019/01/17 16:07:29 URL: http://192.168.122.1:8080/

默认情况下,GoTTY在端口8080上启动Web服务器,但这可以更改。打开提供的URL,以在Web浏览器上查看命令输出。

GoTTY认证

仅运行gotty命令将不会提供任何身份验证系统来在Web浏览器上查看终端会话。使用以下选项为GoTTY配置简单的HTTP身份验证

--credential user:pass

例:

$gotty  --credential admin:AdminPass htop

访问提供的URL时,将要求我们提供用户名和密码。

在我的示例中,用户名是admin,密码是AdminPass。

使用配置文件

我们可以使用配置文件来自定义GoTTY的默认选项。如果存在的话,默认的配置文件文件位于~/.gotty

让我们创建一个启动GoTTY应用程序时使用的简单配置文件。

cat<<EOF > ~/.gotty
//Listen at port 19000 by default
port = "19000"

//Enable TSL/SSL by default
enable_tls = true

//Enable basic Authentication
enable_basic_auth = true
credential = "admin:AdminPassword"

//Permit Write - Enable only with Strong Authentication
permit_write = true

//Enable Random URL

random-url = true
EOF

有关配置选项的完整列表,请参见.gotty。如果启用SSL,请在启动getty之前生成证书。

openssl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt

然后启动GoTTY终端应用程序以显示。

$gotty htop
2019/01/17 16:43:47 Loading config file at: /home/jmutai/.gotty
2019/01/17 16:43:47 Server is starting with command: htop
2019/01/17 16:43:47 URL: https://127.0.0.1:19000/
2019/01/17 16:43:47 URL: https://[::1]:19000/
2019/01/17 16:43:47 URL: https://192.168.100.27:19000/
2019/01/17 16:43:47 URL: https://[fe80::fa2e:617f:c315:6983]:19000/
2019/01/17 16:43:47 URL: https://192.168.122.1:19000/
2019/01/17 16:43:47 TLS crt file: /home/jmutai/.gotty.crt
2019/01/17 16:43:47 TLS key file: /home/jmutai/.gotty.key

与多个客户共享

使用终端多路复用器与多个客户端共享一个进程。如果我们是终端多路复用器的新手,请查看我以前的指南,该指南有关如何在Linux和Unix中安装和使用tmux终端多路复用器。

例如,我们可以通过以下命令启动一个新的名为" getty"和" top"命令的tmux会话。

$gotty tmux new -A -s gotty top

要从终端连接到tmux会话,可以使用以下命令。

$tmux new -A -s gotty