ウェブベースSSHとは、ウェブブラウザを介してセキュアシェル(SSH)アクセスを提供するものです。SSHは、サーバー、ネットワーク機器、その他のデバイスをリモートで制御するためによく使用される安全なネットワークプロトコルです。ウェブベースSSHを使用すると、ユーザーは追加のソフトウェアをインストールすることなく、標準的なウェブブラウザを使用してこれらのデバイスにアクセスして管理できます。
ウェブベースのSSHクライアントは通常、JavaScriptとAjaxまたはWebSocketを使用して実装されます。これらのクライアントはプロキシを介してSSHサーバーと通信するため、ファイアウォールやSSHトラフィックをブロックする可能性のあるその他のネットワークセキュリティ対策を回避できます。これにより、ウェブベースのSSHは、インターネット接続があればどこからでもリモートサーバーやデバイスにアクセスできる、便利で安全な方法となります。
ウェブベースのSSHは、システム管理、ネットワーク管理、リモート開発など、さまざまな用途に役立ちます。IT専門家や開発者がサーバーにリモートアクセスして管理するためによく利用されるほか、自宅やオフィスのコンピュータに遠隔地からアクセスする必要がある個人にも利用されています。
テクノロジー
ウェブベースのSSHクライアントは、ユーザーがウェブブラウザ経由でセキュアシェル(SSH)サーバーにアクセスできるようにするアプリケーションです。これらは主に2つの部分から構成されています。1つはクライアント側のコンポーネントで、通常はJavaScriptと動的HTMLを使用して実装されます。もう1つはサーバー側、つまりウェブアプリケーションコンポーネントで、通常はアプリケーションサーバー上に実装されます。
クライアント側のコンポーネントは、キー入力をキャプチャし、サーバーとの間でメッセージを送受信し、結果をユーザーのWebブラウザに表示します。サーバー側のコンポーネントは、受信したリクエストを処理し、キーボードイベントを、接続されているSSHサーバーと通信するセキュアシェルクライアントに転送します。ターミナル出力は、クライアントに渡されてJavaScriptを使用してHTMLに変換されるか、サーバーによってHTMLに変換されてからクライアントに送信されます。
端末エミュレーション
ウェブベースのSSHサーバーは、クライアント側またはサーバー側のいずれかの端末エミュレーションを使用できる。
クライアント側の端末エミュレーション
クライアント側の端末エミュレーションは、SSHサーバーから生の端末出力をクライアントに直接送信します。この方式の利点は、端末出力をHTMLに変換する処理をクライアント側で行えることです。しかし、JavaScriptの機能に制限される場合があり、クライアントのCPUとメモリを大量に消費する可能性があります。
クライアント側の端末エミュレータの例として、vt100.js が挙げられる。[ 1 ]
サーバー側端末エミュレーション
サーバー側の端末エミュレーションは、端末の画面と状態をメモリに保持し、画面の更新時やクライアントからの更新要求時にHTMLに変換します。この方式の利点は、ユーザーが別のWebブラウザから既存のセッションに接続した場合でも端末の状態が維持されることですが、サーバー側のCPUとメモリ使用量が増加する可能性があります。
サーバーサイドのターミナルエミュレータの例として、terminal.py があります。[ 2 ]
利点
ウェブベースのSSHの主な利点は、以下のようにまとめられます。
- アクセシビリティ:この記事で説明するWebベースのSSHでは、クライアントソフトウェアをローカルにインストールする必要はありません。そのため、Webブラウザを使用してどこからでもSSHサーバーにアクセスできます。通信はHTTPまたはHTTPSに基づいているため、インターネットアクセスをポート80( HTTP)または443(HTTPS )のみに制限するファイアウォールやプロキシの背後からでもSSHサーバーにアクセスできます。
- 匿名アクセス:SSHアクセスは中間Webアプリケーションサーバーを経由してトンネル接続されるため、実際にSSHサーバーと通信するのはこのWebアプリケーションサーバーです。つまり、SSHサーバーはWebアプリケーションサーバーのIPアドレスのみを認識し、クライアントの実際のIPアドレスは隠蔽されます。
- 監査可能性:クライアントとSSHサーバー間のすべての通信はWebアプリケーションサーバーを経由するため、この通信をログに記録できます。これにより、悪意のあるクライアントが自身の活動ログを削除することを防ぎます。これは従来のSSHサーバーの場合と全く同じ状況です。
- セッションの再開:一部のWebベースのSSH実装では、切断後にSSHセッションを再開できます。これは従来のSSHクライアントでは不可能です。
- 組み込み可能:WebベースのSSH実装は任意のWebページに組み込むことができ、他のWebベースのアプリケーションに統合することが可能です。
- 独自の機能:多くのウェブベースのSSHツールには、他のユーザーと端末を共有する機能、端末内に画像を表示する機能、その他の便利な機能など、独自の機能が備わっています。
重要な問題
ウェブベースのSSHクライアントを使用する際には、以下の点を考慮する必要があり、これらは重要です。
- セキュリティ: Webアプリケーションサーバーとの通信にはHTTPSを使用することが重要です。そうしないと、送信されるすべてのデータが単純なパケットスニファで読み取られ、機密情報が漏洩する可能性があります。
- 信頼性:Webアプリケーションサーバーに送信されるデータは、そこで復号化されます。これは、発行されたコマンドを実際のSSHサーバーに転送するために必要です。WebベースのSSHソリューションの運用者は通常、機密データをログに記録しませんが、理論的にはデータは平文でアクセス可能です。WebアプリケーションサーバーとSSHサーバーが同じサーバー上で実行されている場合、または同じ組織によって管理されている場合、これがセキュリティ上の問題を引き起こす可能性は低いと考えられます。
- トンネリング:従来のアプリケーションベースのSSHクライアントとは異なり、WebベースのSSHクライアントはTCPトラフィックをトンネリング(「転送」)することができません。たとえば、 WebベースのSSHセッション上でXセッションを実行することはできません。ただし、この機能の欠如は実装上の問題によるものであり、何らかの形で固有のものではありません。[ 3 ]
参考文献
- ↑ 「Google Code Archive - Google Codeプロジェクトホスティングの長期保存」。
- ↑ "Terminal.py - 純粋なPythonターミナルエミュレーター - Gate One 1.2.0ドキュメント"。
- ↑ jctermは、X11転送などのポート転送を処理できると主張している
- ↑ 「セキュアシェルアプリ」。
- ↑ Chromium Secure Shellに関するよくある質問
- ↑ nassh-relay GitHubリポジトリ
- ↑ "Shellinabox" . GitHub . 2021年10月28日。
- ↑ 「Webssh: Web ベースの SSH クライアント」。
- ↑ Bastillion - WebベースのSSHアクセスと鍵管理