GoTTY-Linuxターミナル(TTY)をWebアプリケーションとして共有する


GoTTYは、ターミナル(TTY)をWebアプリケーションとして共有できるようにするシンプルなGoLangベースのコマンドラインツールです。コマンドラインツールをWebアプリケーションに変えます。

Chrome OSのターミナルエミュレータ(hterm)を使用して、WebブラウザでJavaScriptベースのターミナルを実行します。そして重要なことに、GoTTYは基本的にTTYからクライアントに出力を転送し、クライアントからの入力を受信し(つまり、クライアントからの入力が許可されている場合)、それをTTYに転送するWebソケットサーバーを実行します。

そのアーキテクチャ(hterm + Webソケットのアイデア)は、HTTPおよびHTTPSを介した端末を可能にするWettyプログラムに触発されました。

GoTTYを実行するには、LinuxにGoLang(Goプログラミング言語)環境がインストールされている必要があります。

LinuxシステムにGoTTYをインストールする方法

すでにGoLang環境が機能している場合は、以下のgogetコマンドを実行してインストールします。

# go get github.com/yudai/gotty

上記のコマンドは、GoTTYバイナリをGOBIN環境変数にインストールします。その場合は、次のことを確認してください。

# ls $GOPATH/bin/

LinuxでGoTTYを使用する方法

これを実行するには、GOBIN環境変数とコマンドのオートコンプリート機能を次のように使用できます。

# $GOBIN/gotty

それ以外の場合は、バイナリへのフルパスを入力せずにGoTTYまたはその他のGoプログラムを実行し、以下のエクスポートコマンドを使用して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サーバーを起動します。次に、WebブラウザでURL http://127.0.0.1:8080/ を開くと、実行中のコマンドがターミナルで実行されているかのように表示されます。

LinuxでGoTTYをカスタマイズする方法

プロファイルファイル〜/ .gotty でデフォルトオプションとターミナル(hterm)を変更できます。このファイルが存在する場合は、デフォルトでロードされます。

これは、gottyコマンドによって読み取られるメインのカスタマイズファイルであるため、次のように作成します。

# 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)"
}

コマンドラインから -index オプションを使用して、独自のindex.htmlファイルを設定できます。

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

GoTTYでセキュリティ機能を使用する方法

GoTTYはデフォルトで信頼できるセキュリティを提供しないため、以下で説明する特定のセキュリティ機能を手動で使用する必要があります。

デフォルトでは、GoTTYはクライアントがTTYに入力を入力することを許可せず、ウィンドウのサイズ変更のみを有効にすることに注意してください。

ただし、 -w または -permit-write オプションを使用して、クライアントがTTYに書き込むことを許可できます。これは、サーバーに対するセキュリティの脅威があるためお勧めしません。

次のコマンドは、viコマンドラインエディターを使用して、Webブラウザーで編集するためにファイルfossmint.txtを開きます。

# gotty -w vi fossmint.txt

以下は、Webブラウザから見たviインターフェイスです(通常どおり、ここでviコマンドを使用します)。

クライアントがGoTTYサーバーに接続するために指定されたユーザー名とパスワードを入力する必要がある場合、基本認証メカニズムをアクティブ化してみてください。

以下のコマンドは、 -c オプションを使用してクライアントアクセスを制限し、指定された資格情報(ユーザー名:テストとパスワード:@ 67890)をユーザーに要求します。

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

サーバーへのアクセスを制限する別の方法は、 -r オプションを使用することです。ここで、GoTTYはランダムなURLを生成するため、URLを知っているユーザーだけがサーバーにアクセスできます。

また、–title-format“ GoTTY – {{.Command}}({{。Hostname}})”オプションを使用して、Webブラウザインターフェイスのタイトルを定義し、glanceコマンドを使用してシステム監視統計を表示します。

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

以下は、Webブラウザインターフェイスから見た上記のコマンドの結果です。

デフォルトでは、サーバーとクライアント間のすべての接続が暗号化されていないため、ユーザー資格情報やその他の情報などの秘密情報をGoTTY経由で送信する場合は、 -t または-を使用する必要があります。 -セッションでTLS/SSLを有効にするtls オプション:

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 -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

ターミナルマルチプレクサを使用して、単一のプロセスを複数のクライアントと共有できます。次のコマンドは、gotty with glancesコマンドという名前の新しいtmuxセッションを開始します(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をどのように見つけますか?以下のフィードバックフォームからご意見をお聞かせください。