最新文章:

首页 运维技术

linux终端显示到浏览器

发布时间:2018年07月06日 评论数:抢沙发 阅读数:498

    一、 gotty简介

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

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

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


    二、环境准备

    gotty运行需要依赖go环境,因此我们需要安装golang。

    2.1  下载软件包

    $ wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz

    2.2 解压

    $ tar -C /usr/local -xvzf go1.9.2.linux-amd64.tar.gz

    2.3  配置golang环境

    $ mkdir -p ~/go_projects/{bin,src,pkg}

    2.4 加入环境变量 ~/.bash_profile

    export  PATH=$PATH:/usr/local/go/bin
    export GOPATH="$HOME/go_projects"
    export GOBIN="$GOPATH/bin"
    source ~/.bash_profile

    2.5 查看golang 版本

    [root@k8s-master ~]# go version
    go version go1.9.2 linux/amd64
    [root@k8s-master ~]# go env
    GOARCH="amd64"
    GOBIN="/root/go_projects/bin"
    GOEXE=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GOOS="linux"
    GOPATH="/root/go_projects"
    GORACE=""
    GOROOT="/usr/local/go"
    GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
    GCCGO="gccgo"
    CC="gcc"
    GOGCCFLAGS="-fPIC -m64 -pthread ......"
    CXX="g++"
    CGO_ENABLED="1"
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"


    三、安装并使用gotty

    3.1 安装

    $  go get github.com/yudai/gotty

    2.2 环境变量~/.bash_profile

    export PATH="$PATH:$GOBIN"
    
    source ~/.profile

    2.3  语法

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

    2.4 测试top

    $ gotty  top

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


    点击查看原图

    四、如何在gotty使用安全功能

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

    请注意,默认情况下,GoTTY 不允许客户端输入到TTY中,它只支持窗口缩放。但是,你可以使用 -w 或 --permit-write 选项来允许客户端写入 TTY,但是并不推荐这么做因为会有安全威胁。

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

    $ gotty -w vim test.txt

    4.2 使用用户名密码验证gotty

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

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

    $ gotty -w -p "9000" -c "test@123" glances

    4.3 gotty生产随机URL

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

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

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


    2.png


    4.4 带有SSL、TLS 使用gotty

    因为默认情况下服务器和客户端之间的所有连接都不加密,当你通过 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

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

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

    3.png



    4.5 与多个客户端分享终端

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

    $ gotty tmux new -A -s gotty glances

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

    $ gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
二维码加载中...
本文作者:Mr.linus      文章标题: linux终端显示到浏览器
本文地址:https://www.itsec.vip/466  百度暂未收录本文
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论