GoTTY:把你的 Linux 终端放到浏览器里面

GoTTY 是一个简单的基于 Go 语言的命令行工具,它可以将你的终端(TTY)作为 web 程序共享。它会将命令行工具转换为 web 程序。

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

它的架构(hterm + web socket 的想法)灵感来自 Wetty 项目,它使终端能够通过 HTTP 和 HTTPS 使用。

 

先决条件

你需要在 Linux 中安装 GoLang (Go 编程语言) 环境来运行 GoTTY。

 

如何在 Linux 中安装 GoTTY

如果你已经有一个可以工作的 Go 语言环境,运行下面的 go get 命令来安装它:

  1. <span class="com">#</span><span class="pln"> go </span><span class="kwd">get</span><span class="pln"> github</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">yudai</span><span class="pun">/</span><span class="pln">gotty</span>

上面的命令会在你的 GOBIN 环境变量中安装 GOTTY 的二进制,尝试检查下是否如此:

  1. <span class="com">#</span><span class="pln"> $GOPATH</span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span>

GoTTY:把你的 Linux 终端放到浏览器里面

检查 GOBIN 环境

 

如何在 Linux 中使用 GoTTY

要运行它,你可以使用 GOBIN 环境变量并用命令补全:

  1. <span class="com">#</span><span class="pln"> $GOBIN</span><span class="pun">/</span><span class="pln">gotty</span>

另外,要不带完整命令路径运行 GoTTY 或其他 Go 程序,使用 export 命令将 GOBIN 变量添加到 ~/.profile 文件中的 PATH 环境变量中。

  1. <span class="kwd">export</span><span class="pln"> PATH</span><span class="pun">=</span><span class="str">"$PATH:$GOBIN"</span>

保存文件并关闭。接着运行 source 来使更改生效:

  1. <span class="com">#</span><span class="pln"> source </span><span class="pun">~/.</span><span class="pln">profile</span>

运行 GoTTY 命令的常规语法是:

  1. <span class="typ">Usage</span><span class="pun">:</span><span class="pln"> gotty </span><span class="pun">[</span><span class="pln">options</span><span class="pun">]</span><span class="pun"><</span><span class="typ">Linux</span><span class="pln"> command here</span><span class="pun">></span><span class="pun">[<</span><span class="pln">arguments</span><span class="pun">...>]</span>

现在用 GoTTY 运行任意命令,如 df 来从 Web 浏览器中查看系统分区空间及使用率。

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="kwd">df</span><span class="pun">-</span><span class="pln">h</span>

GoTTY 默认会在 8080 启动一个 Web 服务器。在浏览器中打开 URL:http://127.0.0.1:8080/,你会看到运行的命令仿佛运行在终端中一样:

GoTTY:把你的 Linux 终端放到浏览器里面

Gotty 查看 Linux 磁盘使用率

 

如何在 Linux 中自定义 GoTTY

你可以在 ~/.gotty 配置文件中修改默认选项以及终端,如果该文件存在,它会在每次启动时加载这个文件。

这是由 getty 命令读取的主要自定义文件,因此,按如下方式创建:

  1. <span class="com">#</span><span class="kwd">touch</span><span class="pun">~/.</span><span class="pln">gotty</span>

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

  1. <span class="com">// Listen at port 9000 by default</span>
  2. <span class="pln">port </span><span class="pun">=</span><span class="str">"9000"</span>
  3. <span class="com">// Enable TSL/SSL by default</span>
  4. <span class="pln">enable_tls </span><span class="pun">=</span><span class="kwd">true</span>
  5. <span class="com">// hterm preferences</span>
  6. <span class="com">// Smaller font and a little bit bluer background color</span>
  7. <span class="pln">preferences </span><span class="pun">{</span>
  8. <span class="pln">font_size </span><span class="pun">=</span><span class="lit">5</span><span class="pun">,</span>
  9. <span class="pln">background_color </span><span class="pun">=</span><span class="str">"rgb(16, 16, 32)"</span>
  10. <span class="pun">}</span>

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

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">--</span><span class="pln">index </span><span class="pun">/</span><span class="pln">path</span><span class="pun">/</span><span class="pln">to</span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">html </span><span class="kwd">uptime</span>

 

如何在 GoTTY 中使用安全功能

由于 GoTTY 默认不提供可靠的安全保障,你需要手动使用下面说明的某些安全功能。

 

允许客户端在终端中运行命令

请注意,默认情况下,GoTTY 不允许客户端输入到TTY中,它只支持窗口缩放。

但是,你可以使用 -w--permit-write 选项来允许客户端写入 TTY,但是并不推荐这么做因为会有安全威胁。

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

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">-</span><span class="kwd">w</span><span class="kwd">vi</span><span class="pln"> fossmint</span><span class="pun">.</span><span class="pln">txt</span>

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

GoTTY:把你的 Linux 终端放到浏览器里面

Gotty Web Vi 编辑器

 

使用基本(用户名和密码)验证运行 GoTTY

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

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

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">-</span><span class="kwd">w</span><span class="pun">-</span><span class="pln">p </span><span class="str">"9000"</span><span class="pun">-</span><span class="pln">c </span><span class="str">"test@67890"</span><span class="pln"> glances</span>

GoTTY:把你的 Linux 终端放到浏览器里面

使用基本验证运行 GoTTY

 

Gotty 生成随机 URL

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

还可以使用 -title-format "GoTTY – {{ .Command }} ({{ .Hostname }})" 选项来定义浏览器标题。glances 用于显示系统监控统计信息:

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">-</span><span class="pln">r </span><span class="pun">--</span><span class="pln">title</span><span class="pun">-</span><span class="pln">format </span><span class="str">"GoTTY - {{ .Command }} ({{ .Hostname }})"</span><span class="pln"> glances</span>

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

GoTTY:把你的 Linux 终端放到浏览器里面

使用 Gotty 随机 URL 用于 Glances 系统监控

 

带有 SSL/TLS 使用 GoTTY

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

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

  1. <span class="com">#</span><span class="pln"> openssl req </span><span class="pun">-</span><span class="pln">x509 </span><span class="pun">-</span><span class="pln">nodes </span><span class="pun">-</span><span class="pln">days </span><span class="lit">365</span><span class="pun">-</span><span class="pln">newkey rsa</span><span class="pun">:</span><span class="lit">2048</span><span class="pun">-</span><span class="pln">keyout </span><span class="pun">~</span><span class="str">/.gotty.key -out ~/</span><span class="pun">.</span><span class="pln">gotty</span><span class="pun">.</span><span class="pln">crt</span>

按如下所示,通过启用 SSL/TLS,以安全方式使用 GoTTY:

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">-</span><span class="kwd">tr</span><span class="pun">--</span><span class="pln">title</span><span class="pun">-</span><span class="pln">format </span><span class="str">"GoTTY - {{ .Command }} ({{ .Hostname }})"</span><span class="pln"> glances</span>

 

与多个客户端分享你的终端

你可以使用终端复用程序来与多个客户端共享一个进程,以下命令会启动一个名为 gotty 的新 tmux 会话来运行 glances(确保你安装了 tmux):

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="kwd">tmux</span><span class="kwd">new</span><span class="pun">-</span><span class="pln">A </span><span class="pun">-</span><span class="pln">s gotty glances </span>

要读取不同的配置文件,像下面那样使用 –config "/path/to/file" 选项:

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">-</span><span class="kwd">tr</span><span class="pun">--</span><span class="pln">config </span><span class="str">"~/gotty_new_config"</span><span class="pun">--</span><span class="pln">title</span><span class="pun">-</span><span class="pln">format </span><span class="str">"GoTTY - {{ .Command }} ({{ .Hostname }})"</span><span class="pln"> glances</span>

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

  1. <span class="com">#</span><span class="pln"> gotty </span><span class="pun">-</span><span class="pln">v </span>

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

就这样了!你有尝试过了吗?如何知道 GoTTY 的?通过下面的反馈栏与我们分享你的想法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,即将成为 Linux SysAdmin 和网络开发人员,目前是 TecMint 的内容创作者,他喜欢在电脑上工作,并坚信分享知识。


via: http://www.tecmint.com/gotty-share-linux-terminal-in-web-browser/

作者:Aaron Kili 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关推荐