ウェブサイト検索

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


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

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

こちらもお読みください: Teleconsole – Linux ターミナルを友達と共有する

そのアーキテクチャ (hterm + Web ソケットのアイデア) は、HTTP および HTTPS 経由でターミナルを有効にするWetty プログラムからインスピレーションを得ています。

前提条件:

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

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

すでに動作する GoLang 環境がある場合は、以下の go get コマンドを実行してインストールします。

go get github.com/yudai/gotty

上記のコマンドは、GOBIN 環境変数に GoTTY バイナリをインストールします。そうであるかどうかを確認してください。

ls $GOPATH/bin/

Linux で GoTTY を使用する方法

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

$GOBIN/gotty

それ以外の場合は、バイナリへの完全なパスを入力せずに GoTTY またはその他の Go プログラムを実行し、以下の export コマンドを使用して 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 コマンド ライン エディタを使用してファイル fossmint.txt を開き、Web ブラウザで編集します。

gotty -w vi fossmint.txt

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

GoTTY を基本 (ユーザー名とパスワード) 認証で使用する

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

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

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

Gotty ランダム URL を生成

サーバーへのアクセスを制限するもう 1 つの方法は、-r オプションを使用することです。ここで、GoTTY はランダムな URL を生成し、その URL を知っているユーザーのみがサーバーにアクセスできるようにします。

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

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

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

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

端末を複数のクライアントと共有する

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