SSH経由でリモートXセッションを開始するためにXDMCPが必要なのはなぜですか?

SSH経由でリモートXセッションを開始するためにXDMCPが必要なのはなぜですか?

私のラップトップ(両方ともTrisquelを実行)でWi-Fi経由で自分のデスクトップコンピュータにアクセスするためにリモートデスクトップ接続を設定しようとしています。私はVNCを試してみましたが、遅すぎて他のオプションを探しています。理想的に私がやりたいことは、X転送を使用して私のラップトップの別々のtty(例えばtty8)で実行されているSSHを介してリモートXセッションを開始することです。これは可能なようですが、どのように機能するかを理解しようとしています。

SSHトンネルを介したX転送は、単一のXアプリケーションで正しく機能しているようですssh -X

startx lxsession -- :1 tty8

それでは、2つと2つを組み合わせると、SSHを使用してリモートコンピュータにログインし、次のコマンドを入力するとSSH接続を介してリモートセッションを開始できます。

startx gnome-session -- :1 tty8

しかし、いいえ、これは動作しません!次のエラーが発生します。

X: user not authorized to run the X server, aborting.

私が読んだことによれば、これを行うにはXDMCPおよび/またはXネストを使用する必要があるようです。

だから私の質問は:これを行うためになぜこれらの追加パッケージを使うべきですか?私はXがネットワークの透明性を持たなければならないと思います。この場合、私が使用したいttyがローカルまたはリモートコンピュータにあるのはなぜ知っているか気にしますか? XDMCP / XネストはXにデフォルトで含まれていないものをインポートしますか?

私はこれを理解し、よりよく理解しようとしています。

答え1

startx gnome-session -- :1 tty8

セッションでこのコマンドを実行すると、リモートで直接操作ssh -Xできなくなります。gnome-session代わりに、実際にtty8そのシステムに座っているすべての人のために、リモートホストの仮想コンソールからリモートでGNOMEセッションを開始しようとしています。

代わりに、パスワードまたはSSHキーのパスワードを入力するように求められず、アカウントを使用してリモートホストでコマンドを実行できるように、まずSSHキーを設定する必要があります。その後、次のように実行します。あなたの地域でシステム:

startx ssh -X <remote host> gnome-session -- :1 tty8

&コマンドをバックグラウンドで実行するには、最後に追加する必要があります。

基本的には次のようになります。

1)tty8のXサーバー、セッションプロセスとして実行しています...

2)... SSH接続Xをリモートホストに転送します。ここで...

3)... gnome-sessionSSH接続を介してディスプレイを起動し、ローカルtty8の「空の」Xサーバーに再送信します。

GNOMEがGPUの高度な3Dアクセラレーション機能を使用してデスクトップをレンダリングする場合は、ローカルで実行するときに直接レンダリング(= GNOMEウィンドウマネージャとXサーバー間の直接メモリアクセス)を使用します。このようなリモートセッションを実行すると、直接レンダリングが不可能になります(GPUがウィンドウマネージャプロセスと同じシステムにないためです!)、これが遅くなる可能性があります。この場合、より単純なウィンドウマネージャを選択する必要があるかもしれません。

XDMCPは制御プロトコルです。X11ターミナル:他のコンピュータでX11モニタ+マウス+キーボードとして機能するシンプルなコンピュータデバイスです。 XDMCPプロトコルはSSH以前に開発されており、完全に安全ではありません。 XDMCPは安全ではないため、最新のシステムではデフォルトで無効になっているため、XDMCPをサポートするようにディスプレイマネージャ(またはその他)を具体的gdmkdm設定しない限り、あなたの場合は機能しません。これにより、ローカルXサーバーがX11端末であるかのように偽装され、リモートホストに直接、暗号化されていない非SSH転送接続を作成できます。 (拒否してください。」)xdm*dmstartx

一方、Xネストを使用すると、tty7通常のローカルX11セッション内に0.0(または)の大きなウィンドウを持つことができます。これにはリモートデスクトップセッションが含まれます。

答え2

私はこれにXnestを使用しますhttps://www.x.org/archive/X11R7.5/doc/man/man1/Xnest.1.html

インストール後(Debian/ubuntu/mint/etcのapt)端末を開き、次の操作を行います。

user@localhost:~$ Xnest :1 &
user@localhost:~$ export DISPLAY=:1
user@localhost:~$ ssh -Y user@remotehost
(login, etc)
user@remotehost:~$ mate-session

または、VT(ctrl + alt + F1など)を開き、を使用して新しいXサーバーをX :1起動し、同じ操作を実行しexport DISPLAY=:1てSSHに接続することもできます。個人的に私はXnestを好みます。

関連情報