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. # go get github.com/yudai/gotty

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


  1. # $GOPATH/bin/

检查 GOBIN 环境

如何在 Linux 中使用 GoTTY

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


  1. # $GOBIN/gotty

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


  1. export PATH="$PATH:$GOBIN"

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


  1. # source ~/.profile

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


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

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


  1. # gotty df -h

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

Gotty 查看 Linux 磁盘使用率

如何在 Linux 中自定义 GoTTY

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

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


  1. # touch ~/.gotty

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


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

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


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

如何在 GoTTY 中使用安全功能

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

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

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

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

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


  1. # gotty -w vi fossmint.txt

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

Gotty Web Vi 编辑器

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

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

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


  1. # gotty -w -p "9000" -c "test@67890" glances

使用基本验证运行 GoTTY

Gotty 生成随机 URL

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

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


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

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

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

带有 SSL/TLS 使用 GoTTY

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

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


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

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


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

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

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


  1. # gotty tmux new -A -s gotty glances

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


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

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


  1. # gotty -v

原文发布时间为:2017-04-25

本文来自合作伙伴“Linux中国”

时间: 2024-09-29 22:50:35

GoTTY:把你的 Linux 终端放到浏览器里面的相关文章

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

GoTTY 是一个简单的基于 Go 语言的命令行工具,它可以将你的终端(TTY)作为 web 程序共享.它会将命令行工具转换为 web 程序. 它使用 Chrome OS 的终端仿真器(hterm)来在 Web 浏览器上执行基于 JavaScript 的终端.重要的是,GoTTY 运行了一个 Web 套接字服务器,它基本上是将 TTY 的输出传输给客户端,并从客户端接收输入(即允许客户端的输入),并将其转发给 TTY. 它的架构(hterm + web socket 的想法)灵感来自 Wetty

11个炫酷的Linux终端命令大全

  今天给大家分享用了十年的Linux总结出来的11个炫酷的Linux终端命令大全,通过今天这篇文章我将向大家展示一系列的Linux命令.工具和技巧,我希望一开始就有人告诉我这些,而不是曾在我成长道路上绊住我. 1.命令行日常系快捷键 如下的快捷方式非常有用,能够极大的提升你的工作效率: CTRL + U -剪切光标前的内容 CTRL + K -剪切光标至行末的内容 CTRL + Y -粘贴 CTRL + E -移动光标到行末 CTRL + A -移动光标到行首 ALT + F -跳向下一个空格

11 个炫酷的 Linux 终端命令大全

今天给大家分享用了十年的Linux总结出来的11个炫酷的Linux终端命令大全,通过今天这篇文章我将向大家展示一系列的Linux命令.工具和技巧,我希望一开始就有人告诉我这些,而不是曾在我成长道路上绊住我. 1.命令行日常系快捷键 如下的快捷方式非常有用,能够极大的提升你的工作效率: CTRL + U -剪切光标前的内容 CTRL + K -剪切光标至行末的内容 CTRL + Y -粘贴 CTRL + E -移动光标到行末 CTRL + A -移动光标到行首 ALT + F -按单词前移(右向)

Linux终端:speedtest_cli检测你的实时带宽速度

Linux终端:speedtest_cli检测你的实时带宽速度 你在家(或者办公室)的上传和下载速度如何?你能保证,你支付费用给ISP的同时得到了等价的回报? 要想测试我们因特网连接的速度,当下存在着一些因特网服务,比如说SpeedTest,这是一种可以通过Web浏览器和手机应用程序浏览的web服务. 现在,你可以很容易地检测你的网速,使用speedtest_cli同样很简单,它是一个使用speedtest.net来测试因特网带宽的命令行界面.通过这种方式,你也可以在没有浏览器或者图形化界面的服

Googler:现在可以 Linux 终端下进行 Google 搜索了!

一个小问题:你每天做什么事?当然了,好多事情,但是我可以指出一件事,你几乎每天(如果不是每天)都会用 Google 搜索,我说的对吗?(LCTT 译注:Google 是啥?/cry ) 现在,如果你是一位 Linux 用户(我猜你也是),这里有另外一个问题:如果你甚至不用离开终端就可以进行 Google 搜索那岂不是相当棒?甚至不用打开一个浏览器窗口? 如果你是一位类 *nix 系统的狂热者而且也是喜欢终端界面的人,我知道你的答案是肯定的,而且我认为,接下来你也将喜欢上我今天将要介绍的这个漂亮的

成为 Linux 终端高手的七种武器

Linux 终端不仅是一个键入命令的地方.如若你能熟谙这些基础技巧,那么你会在绝大多数 Linux 发行版的默认使用的 Bash shell中游刃有余. 这是howtogeek.com 网站特供给初级用户升级打怪时不能忘记携带的七种武器-- 1.Tab 补全 这样能节省时间,并且对于输入那些你不很确定其具体名称的文件和命令来说很方便.比如,当前目录下有一个名为"really long file name"的文件,你想要删除它.你可以输入完整的文件名,但是你必须确保正确地输入了空格和每个

谁需要GUI?快看Linux 终端生存之道

完全在 Linux 终端中生存并不容易,但这绝对是可行的. 处理常见功能的最佳 Linux shell 应用 你是否曾想像过完完全全在 Linux 终端里生存?没有图形桌面,没有现代的 GUI 软件,只有文本 -- 在 Linux shell 中,除了文本还是文本.这可能并不容易,但这是绝对可行的.我最近尝试完全在 Linux shell 中生存30天.下边提到的就是我最喜欢用的 shell 应用,可以用来处理大部分的常用电脑功能(网页浏览.文字处理等).这些显然有些不足,因为纯文本操作实在是有

在Linux终端中查看公有IP的方法详解

  首先回顾一下一般的查看IP的命令: ifconfig Linux查看IP地址的命令--ifconfig ifconfig命令用于查看和更改网络接口的地址和参数 $ifconfig -a lo0: flags=849 mtu 8232 inet 127.0.0.1 netmask ff000000 hme0: flags=863 mtu 1500 inet 211.101.149.11 netmask ffffff00 broadcast 211.101.149.255 ether 8:0:2

在Linux终端中使用后台运行模式启动程序的方法

  我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境. 如果是使用Ubuntu的话,你可以利用CTRL+ALT+T组合键打开终端.当然你也可以使用超级键(Windows键)打开Dash,搜索"TERM",然后点击"Term"图标来打开终端窗口. 对于其他的桌面环境来说,例如XFCE.KDE.LXDE.Cinnamon以及MATE,你可以在菜单中找到终端.有些环境会在停靠栏或者面板上面包含终端图标. 通常情况下,你可以在终端里面