如何在Web浏览器中共享Linux终端会话
我们要在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