web-dev-qa-db-ja.com

サーバーにソフトウェアをインストールせずにSSH / x11転送を高速化

サーバーにソフトウェアをインストールせずに、より高速な暗号と圧縮を使用することを除いて、SSHでX11転送を加速する方法を知っている人はいますか?私の場合、サーバーにソフトウェアをインストールする権限がありません。それは私の大学のものです。ただし、サーバーで実行し、自宅のコンピューターに表示されるGUIプログラムを実際に使用可能にしたいと考えています。

6
Alex Shtof

Sshを介したX11のトンネリングは帯域幅が非常に高く、Xプロトコルは高RTTリンクには理想的ではありません。使用するのに十分な帯域幅がないか、待ち時間が長すぎる可能性があります。

あなたはすでにあなたが持っているオプションを絞り込んだようです:

  • 両端にソフトウェアをインストールする必要があるオプション(x2go、FreeNXなどのXプロトコルオプティマイザー、またはVNCやリモートデスクトップなどのX over SSH以外のプロトコルを使用する)

  • 圧縮を使用する(または使用しない方が良いですが、両方を試してください):オプション-C

  • blowFish-CBCやarcfourなどのより安価な暗号プロトコルを使用する(2番目は安全性が低い):オプション-cblowfish-cbcを追加する

見逃していると思われるのは、XプログラムがFirefoxの場合だけです。この場合、設定は network.http.pipelining sshの多重化を使用すると、 違いを生む になります。

7
Law29

高性能SSHが必要なときはいつでも、パフォーマンスを向上させるために公式SSHコードへの一連のパッチである ssh-hpn を使用します。 FreeBSDのようないくつかのプラットフォームはそれを箱から出して含みます、他のものではあなたはそれをパッケージマネージャーを通してインストールすることができます、あるいはあなたはそれをソースからコンパイルしてあなた自身でパッチを加えることができます。

人気のあるプラットフォームを使用している場合は、おそらくssh-hpnのバイナリディストリビューションを見つけることができます(ただし、明らかなセキュリティ上の理由から、ソースからのビルドは常にこのようなソフトウェアを使用する方が優れています)。

セキュリティについてまったく気にしない場合は、sshの代わりに X11 over netcat (aka nc)を使用できます。それはおそらくあなたのマシンにもすでにインストールされています。

2

アイデア#1:圧縮をオフにします。はい、オフにします。問題は、帯域幅ではなく、待ち時間に関するものである可能性があります。チャネルに圧縮があると、通常、GUIアプリケーションのレイテンシーが非常に悪くなります。十分な帯域幅がある場合は、最初の場所で奇妙に見える素敵な試みをお勧めします。すべての場所で圧縮をオフにします。

アイデア#2:別のssh実装を使用してみてください。次に、opensshはその速度について少し悪名高いです。おそらく、開発者がセキュリティに焦点を合わせているという部分的な理由であり、速度は彼らにとって二次的なものです。遅延の原因は、おそらくnot暗号化アルゴリズムの遅さですが、同時データ転送イベントの非効率的な処理(多くの方向で、両方着信および発信)、およびイベント指向ではないシングルスレッドのソフトウェアでの計算/圧縮/暗号化。 (例:ソフトウェアの一般的な動作:最初にデータブロックを暗号化してからネットワークに送信し、最後にリモート側から送信されたものを読み取って復号化します。完全に問題ないようですが、ひどい待ち時間が含まれています。到着したデータブロックは、実際のブロック圧縮の準備が整うまで読み取られません...マルチスレッド、または少なくとも非同期の方法で実装する必要があり、opensshは非常に非常に悪いです)。

アイデア#3:両側の構成を確認してください。圧縮はサーバーとクライアント構成の両方で設定できます。多分あなたは片側だけにセットアップするのは非現実的ではないように思えます。チェックして、実際に両方の側で発生することを確認してください(ただし、マウスの動きとキーボードのヒットはそのためにあまり多くの帯域幅を使用しないため、おそらく送信側ではそれほど重要ではありません。おそらく非対称ソリューションであり、大きな圧縮も行われます。サーバー->クライアント側でのイメージ操作は、圧縮されていない低遅延のクライアント->サーバーデータを送信するときに、最良の結果を約束します。