web-dev-qa-db-ja.com

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

リモートデスクトップ接続をセットアップして、ラップトップ(両方ともTrisquelを実行している)からWiFi経由でデスクトップPCにアクセスしようとしています。私はVNCを試してみましたが、ひどく遅いので、代わりのオプションを探しています。理想的には、X転送を使用して、ラップトップ上の別のtty(つまりtty8)で実行されるSSH経由でリモートXセッションを開始することです。それは可能であるように思えますが、私はそれがどのように機能するかについて頭を動かそうとしています。

SSHトンネルを介したX転送は、ssh -Xを使用して、個々のXアプリケーションで正常に機能するようです。次のコマンドを使用して、tty8で新しいローカルXセッションを開始することもできます(xinitがインストールされています)。

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にはデフォルトでは含まれていません。

私はこれに頭を悩ませて、少しよく理解しようとしています。

2
Time4Tea
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)...リモートホストへのX転送SSH接続。ここで...

3)...gnome-sessionが起動し、その表示をSSH接続経由でローカルtty8の「空の」Xサーバーに戻します。

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

XDMCPはX11端末:を取り除いたコンピューター機器を制御するためのプロトコルです。その唯一の仕事は、他のコンピューターのX11ディスプレイ+マウス+キーボードとして機能することです。 XDMCPプロトコルはSSHの前に開発されたもので、完全に安全ではありません。ディスプレイマネージャー(gdmkdmxdmまたはその他の*dm)をXDMCP-として具体的に構成しない限り、ケースには適用されません。 XDMCPは安全ではないため、最新のシステムではデフォルトで無効になっているので注意してください。その場合、startxにローカルXサーバーをX11端末であるかのように見せ、リモートホストへの非暗号化の非SSH転送直接接続を確立させることができます。 (いやだっていうだけだよ"。)

一方、Xネストは、たとえば次のことを可能にします。 :0.0(またはtty7)の通常のローカルX11セッションに単一の大きなウィンドウがあり、これにはリモートデスクトップセッションが含まれます。

3
telcoM

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

インストール後(Debian/ubuntu/mint/etcに適しています)ターミナルを開いてください

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 :1を使用し、同じexport DISPLAY=:1を実行してsshingするだけで、新しいXサーバーを起動できます。個人的には、Xnestを好みます。

2
ivanivan