GoTTY - 将您的Linux终端(TTY)分享为Web应用程序

GoTTY是一个简单的基于GoLang的命令行工具,可以将您的终端(TTY)作为Web应用程序共享,并将命令行工具转换为Web应用程序。

GoTTY是一个简单的基于GoLang的命令行工具,可以将您的终端(TTY)作为Web应用程序共享。 它将命令行工具转换为Web应用程序。

它使用Chrome OS的终端仿真器( hterm )在Web浏览器上执行基于JavaScript的终端。 重要的是, GoTTY运行一个Web套接字服务器,它基本上将TTY的输出传输给客户端,并从客户端接收输入(即允许客户端的输入),并将其转发给TTY

其架构(hterm + web套接字概念)受到Wetty程序的启发, 该程序通过HTTPHTTPS实现终端。

先决条件:

您应该在Linux中安装GoLang(Go Programming Language)环境来运行GoTTY。

如何在Linux系统中安装GoTTY

如果您已经有一个工作的GoLang环境 ,请运行下面的go get命令来安装它:

# go get github.com/yudai/gotty

上面的命令将在您的GOBIN环境变量中安装GoTTY二进制文件,尝试检查是否如此:

# $GOPATH/bin/
检查GOBIN环境

检查GOBIN环境

如何在Linux中使用GoTTY

要运行它,可以使用GOBIN env变量和命令自动完成功能,如下所示:

# $GOBIN/gotty

否则,运行GoTTY或任何其他Go程序,而不输入二进制文件的完整路径,使用下面的export命令将您的GOBIN变量添加到~/.profile文件中的PATH中:

export PATH="$PATH:$GOBIN"

保存文件并关闭它。 然后来源文件以实现上述更改:

# source ~/.profile

运行GoTTY命令的一般语法是:

Usage: gotty [options] <Linux command here> [<arguments...>]

现在使用任何命令(如df命令)运行GoTTY,以从Web浏览器查看系统磁盘分区的空间和用法:

# gotty df -h

默认情况下,GoTTY将启动8080端口的Web服务器。 然后在您的网络浏览器上打开URL: http://127.0.0.1:8080/ : http://127.0.0.1:8080/ : http://127.0.0.1:8080/ ,您将看到正在运行的命令就像在您的终端上运行:

Gotty Linux磁盘使用

Gotty Linux磁盘使用

如何在Linux中自定义GoTTY

您可以在配置文件~/.gotty中更改默认选项和终端( hterm ),默认情况下将加载此文件,以防其存在。

这是由getty命令读取的主要定制文件,因此,创建如下:

# touch ~/.gotty

并为配置选项设置您自己的有效值(在此处查找所有配置选项)以自定义GoTTY,例如:

// Listen at port 9000 by default
port = "9000"
// Enable TSL/SSL by default
enable_tls = true
// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
font_size = 5,
background_color = "rgb(16, 16, 32)"
}

您可以使用命令行中的--html选项设置您自己的index.html文件:

# gotty --index /path/to/index.html uptime

如何在GoTTY中使用安全功能

由于GoTTY默认情况下不提供可靠的安全性,因此您需要手动使用下面说明的某些安全功能。

允许客户端在终端中运行命令/类型输入

请注意,默认情况下,GoTTY不允许客户端输入到TTY中,它只能启用窗口大小调整。

但是,您可以使用-w--permit-write选项来允许客户端写入TTY,这是因为服务器的安全威胁不推荐的。

以下命令将使用vi命令行编辑器打开文件fossmint.txt以在Web浏览器中进行编辑:

# gotty -w vi fossmint.txt

以下是从Web浏览器看到的vi界面(像往常一样使用vi命令):

Gotty Web Vi编辑器

Gotty Web Vi编辑器

使用GoTTY与基本(用户名和密码)身份验证

尝试激活基本身份验证机制,客户端将需要输入指定的用户名和密码才能连接到GoTTY服务器。

以下命令将使用-c选项限制客户端访问,以向用户询问指定的凭据(用户名: test和password: @ 67890 ):

# gotty -w -p "9000" -c "test@67890" glances
Gotty与基本认证

Gotty与基本认证

Gotty生成随机URL

限制访问服务器的另一种方法是使用-r选项。 在这里,GoTTY将生成一个随机URL,以便只有知道该URL的用户可以访问该服务器。

还可以使用-title格式的“GoTTY - {{.Command}}”({{.Hostname}})选项来定义Web浏览器界面标题,而glances 命令用于显示系统监视统计信息:

# gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

以下是从Web浏览器界面看到的上面的命令的结果:

Glance Linux监控的Gotty随机URL

Glance Linux监控的Gotty随机URL

使用GoTTY与SSL / TLS

因为默认情况下,服务器和客户端之间的所有连接都不加密,当您通过GoTTY发送秘密信息(例如用户凭据或任何其他信息)时,必须使用-t--tls选项来启用TLS / SSL会话:

GoTTY将默认读取证书文件~/.gotty.crt和密钥文件~/.gotty.key ,因此,首先创建一个自签名证书以及使用以下openssl命令的密钥文件(回答问题为了生成证书和密钥文件):

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

然后以安全方式使用GoTTY,启用SSL / TLS,如下所示:

# gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

与多个客户分享您的终端

您可以使用终端多路复用器与多个客户端共享单个进程,以下命令将启动一个名为getty的新的tmux会话 ,带有glance 命令 (确保已安装tmux):

# gotty tmux new -A -s gotty glances 

要读取不同的配置文件,请使用-config“/ path / to / file ”选项,如下所示:

# gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

要显示GoTTY版本,请运行以下命令:

# gotty -v 

访问GoTTY GitHub存储库以查找更多使用示例: https//github.com/yudai/gotty

就这样! 你试过了吗? 如何找到GoTTY? 通过下面的反馈表与我们分享您的想法。