web-dev-qa-db-ja.com

VNCとssh -Xの違い

単にssh -X (-Y)を使用するのではなく、なぜVNC(または、さらに言えばNX)を使用するのですか。 VNCは使用する帯域幅が少ないことを読んだのですが、それぞれのツールに他の違いや利点はありますか?

29

帯域幅と待ち時間の問題(多少異なる場合があります)を除いて、大きな違いは、それが提供する機能です。

VNCはセッション全体、デスクトップ、およびすべてをエクスポートしますが、sshは単一のプログラムを実行し、そのウィンドウをワークステーションに表示します。

VNCサーバーは、画面を切断しても存続するセッションをエクスポートし、後ですべてのウィンドウを開いた状態で再接続できます。これは、ssh Xトンネルでは不可能です。Xサーバーが停止すると、ウィンドウが消えてしまうためです。 。

30
dkagedal

ssh -Xは、X11コマンドをローカルXサーバーにリダイレクトします。つまり、プログラムをローカルで実行しているかのように、実際にはもう一方のコンピュータで実行されています。 very低速です。これは、大量の帯域幅を使用するためです。 (これは、X11が「ネットワーク透過的」であると人々が言っ​​ていることです。)

代わりに、VNCと他のリモートデスクトップアプリは、他のコンピューターにすべてのグラフィック描画などを処理させ、本質的にスクリーンショットをキャプチャして、コンピューターに送り返します。すべてを表示するために必要な情報がはるかに少ないため、はるかに高速に見えるかもしれません。ただし、単一のアプリケーションではなく、デスクトップ全体も送信します。

インターネットでssh -Xを使用することはお勧めしません。単純な理由の1つです。利用可能な帯域幅をすべて使用することです。私の意見では、これはLAN経由でかなり便利なので、1つのアプリケーションだけが必要で、デスクトップ全体を実行したくない場合は、これが良い方法です。それ以外の場合は、VNCを使用します。

9
greyfade

VNCはリモートシステムからデスクトップ全体を共有します。リモートシステムに本格的なデスクトップが必要です。

ssh -Xを使用すると、リモートサーバーから単一のXアプリケーションを実行できます。リモートシステムは完全なデスクトップを実行している必要はなく、リモートシステムにインストールするパッケージはほんの一握りで十分です。

ssh -Xは、リモート接続を介して複雑なソフトウェアパッケージをインストールする場合に役立ちます。一部のソフトウェア製品は、GUIインストーラー(Oracleデータベースなど)を使用する場合があります。リモートサーバーに本格的なGnomeデスクトップをインストールしたくありません。したがって、1つまたは2つのX11パッケージ(Xauth?)をリモートサーバーにインストールし、DBAが 'ssh -X/media/cdrom/Oracle-installer'のような単純なものを使用してOracleインストーラーをリモートで実行できるようにします。

4

VNCまたはNX(X2Go)を使用すると、セキュリティ上の利点もあります。悪意のあるアプリはスクリーンショットを撮ったり、キーロガーを使用して実際のデスクトップのキーをログに記録したりすることはできませんが、悪意のあるアプリがバックグラウンドで実行されている場合でも、X11転送でSSHを使用することは可能です。

SSH -X(または-Y)を使用する場合は、アプリ(たとえば、公式のLinux配布パッケージから提供されるオープンソースアプリ)を信頼するか、実行中に機密作業を行わないようにする必要があります。

これらをクロスプラットフォームおよびオープンソースツール(LXCコンテナーでテスト済み)で確認できました。

https://github.com/lxqt/screengrab

https://github.com/GiacomoLaw/Keylogger

1
baptx