帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:SHA  终端  Web应用  分享  TERM  WEB  
Share your terminal as a web application

  • 源代码名称:gotty
  • 源代码网址:http://www.github.com/yudai/gotty
  • gotty源代码文档
  • gotty源代码下载
  • Git URL:
    git://www.github.com/yudai/gotty.git
  • Git Clone代码到本地:
    git clone http://www.github.com/yudai/gotty
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/yudai/gotty
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • GoTTY - 将你的终端共享为web应用程序

    GitHub releaseWerckerMIT License

    GoTTY是一个简单的命令行 工具,可以将你的CLI工具转换为web应用程序。

    Screenshot

    安装

    发布的页面下载最新的稳定二进制文件。 注意,标记为 Pre-release的发布是为了测试目的而构建的,它可以包括不稳定。 下载标记为最新版本的版本,用于stabale构建。

    ( 用 darwin_amd64 命名的文件适用于 Mac OS X 用户)

    Homebrew 安装

    你也可以使用 Homebrew 安装 GoTTY 。

    $ brew install yudai/gotty/gotty

    go get 安装( 开发)

    如果你有一个go语言环境,你可以使用 go get 命令安装 GoTTY 。 但是,该命令从最新的主分支构建二进制文件,该文件可以包括不稳定或者。 GoTTY需要 go1.9 或者更高版本。

    $ go get github.com/yudai/gotty
    用法
    Usage: gotty [options] <command> [<arguments...>]

    以你喜欢的命令作为参数运行 gotty ( 比如 。 gotty top ) 。

    默认情况下,GoTTY在端口 8080处启动一个站点服务器。 打开web浏览器上的URL,你可以以看到正在运行的命令,就像它在你的终端上运行一样。

    命令行选项

    --address value, -a value IP address to listen (default:"0.0.0.0") [$GOTTY_ADDRESS]
    --port value, -p value Port number to liten (default:"8080") [$GOTTY_PORT]
    --permit-write, -w Permit clients to write to the TTY (BE CAREFUL) [$GOTTY_PERMIT_WRITE]
    --credential value, -c value Credential for Basic Authentication (ex: user:pass, default disabled) [$GOTTY_CREDENTIAL]
    --random-url, -r Add a random string to the URL [$GOTTY_RANDOM_URL]
    --random-url-length value Random URL length (default: 8) [$GOTTY_RANDOM_URL_LENGTH]
    --tls, -t Enable TLS/SSL [$GOTTY_TLS]
    --tls-crt value TLS/SSL certificate file path (default:"~/.gotty.crt") [$GOTTY_TLS_CRT]
    --tls-key value TLS/SSL key file path (default:"~/.gotty.key") [$GOTTY_TLS_KEY]
    --tls-ca-crt value TLS/SSL CA certificate file for client certifications (default:"~/.gotty.ca.crt") [$GOTTY_TLS_CA_CRT]
    --index value Custom index.html file [$GOTTY_INDEX]
    --title-format value Title format of browser window (default:"{{. command }}@{{. hostname }}") [$GOTTY_TITLE_FORMAT]
    --reconnect Enable reconnection [$GOTTY_RECONNECT]
    --reconnect-time value Time to reconnect (default: 10) [$GOTTY_RECONNECT_TIME]
    --max-connection value Maximum connection to gotty (default: 0) [$GOTTY_MAX_CONNECTION]
    --once Accept only one client and exit on disconnection [$GOTTY_ONCE]
    --timeout value Timeout seconds for waiting a client(0 to disable) (default: 0) [$GOTTY_TIMEOUT]
    --permit-arguments Permit clients to send command line arguments in URL (e.g. http://example.com:8080/?arg=AAA&arg=BBB) [$GOTTY_PERMIT_ARGUMENTS]
    --width value Static width of the screen, 0(default) means dynamically resize (default: 0) [$GOTTY_WIDTH]
    --height value Static height of the screen, 0(default) means dynamically resize (default: 0) [$GOTTY_HEIGHT]
    --ws-origin value A regular expression that matches origin URLs to be accepted by WebSocket. No cross origin requests are acceptable by default [$GOTTY_WS_ORIGIN]
    --term value Terminal name to use on the browser, one of xterm or hterm. (default:"xterm") [$GOTTY_TERM]
    --close-signal value Signal sent to the command process when gotty close it (default: SIGHUP) (default: 1) [$GOTTY_CLOSE_SIGNAL]
    --close-timeout value Time in seconds to force kill process after client is disconnected (default: -1) (default: -1) [$GOTTY_CLOSE_TIMEOUT]
    --config value Config file path (default:"~/.gotty") [$GOTTY_CONFIG]
    --version, -v print the version

    配置文件

    你可以通过向 gotty 命令提供配置文件来定制默认选项和终端( hterm ) 。 默认情况下,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)"
    }

    查看这里存储库中的.gotty 文件以获得配置选项列表。

    安全选项

    默认情况下,GoTTY不允许客户端发送任何按键或者命令,除了终端窗口调整。 当你想允许客户机将输入写入TTY时,请添加 -w 选项。 但是,接受来自远程客户端的输入对于大多数命令来说是危险的。 由于某些原因需要与TTY交互,考虑使用tmux或者GNU启动 GoTTY,并将你的命令与多个客户端一起运行在它上。

    要限制客户端访问,可以使用 -c 选项来启用基本身份验证。 使用这里选项,客户端需要输入指定的用户名和密码才能连接到GoTTY服务器。 请注意,credentical将以纯文本方式在服务器和客户端之间传输。 要获得更严格的验证,请考虑下面描述的SSL/TLS 客户端证书身份验证。

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

    默认情况下,服务器和客户端之间的所有通信都不加密。 通过GoTTY发送机密信息时,我们强烈建议你使用 -t 选项,该选项在会话中启用 tls/ssl 。 默认情况下,GoTTY加载放置在 ~/.gotty.crt~/.gotty.key 上的crt和密钥文件。 你可以使用 --tls-crt--tls-key 选项覆盖这些文件路径。 当你需要生成自签名证书文件时,你可以使用 openssl 命令。

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

    ) Safari使用自签署证书时,请参见如何启用自签名证书( WebSockets )

    为了提高安全性,你可以通过向 --tls-ca-crt 选项( 这里选项要求设置 -t 或者 --tls ) 提供一个CA证书文件来使用 SSL/TLS 客户机证书认证。 这里选项要求所有客户端发送由指定证书颁发机构签名的有效客户端证书。

    与多个客户端共享

    GoTTY在新客户端连接到服务器时使用给定的命令启动一个新进程。 这意味着用户不能在默认情况下与其他终端共享一个终端。 但是,你可以使用终端多路转换器来共享多个客户端的单个进程。

    例如以下命令可以使用 top 命令启动一个名为 gotty的新的tmux会话。

    $ gotty tmux new -A -s gotty top

    这里命令不允许客户端发送击键,但是可以以从本地终端附加会话,运行 top 命令模式。 若要从终端连接到tmux会话,可以使用以下命令。

    $ tmux new -A -s gotty

    使用终端多路复用器,你可以控制终端并允许客户端只看到你的屏幕。

    可以复用的快速共享

    若要通过快捷键与它的他人共享当前会话,可以以向 .tmux.conf 添加像 below 这样的行。

    # Start GoTTY in a new window with C-t
    bind-key C-t new-window"gotty tmux attach -t `tmux display -p '#S'`"

    正在播放 Docker

    如果要为每个客户端创建jail环境,则可以使用 Docker 容器,如下所示:

    $ gotty -w docker run -it --rm busybox

    插件开发

    可以使用以下命令生成二进制文件。 现在不支持 Windows 。 需要 go1.9.

    # Install toolsgo get github.com/jteeuwen/go-bindata/...
    go get github.com/tools/godep# Buildmake

    要构建前端部件( JS文件和其他 static 文件),需要 npm

    体系结构

    GoTTY使用 xterm.jshterm插件在web浏览器上运行一个基于JavaScript的终端。 GoTTY本身提供了一个 web socket服务器,它只是将输出从TTY传递到客户机,并接收来自客户机的输入并将它的转发到TTY服务器。 这个 hterm + web socket的想法是由 Wetty 启发的。

    命令行 客户端

    • 如果你想要从终端连接到GoTTY服务器,请执行以下操作:

    Web浏览器中的终端/ssh

    • 安全 shell ( Chrome 应用) 插件: 如果你是 Chrome 用户,并且需要在web浏览器上使用"真实"ssh客户端,也许安全 shell 应用程序也需要。
    • Wetty: 基于 node的web终端( ssh/登录)
    • ttyd: 带有CJK和IME支持的GoTTY端口

    终端共享

    • tmate: 基于tmux的终端终端共享
    • termshare: 通过HTTP服务器共享终端终端
    • Tmux: Tmux本身也支持通过SSH共享 TTY )
    许可证

    麻省理工学院许可证



    文章标签:WEB  SHA  TERM  Web应用  终端  分享  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语