ラズベリーパイ3 *リバース*リモートデスクトップ

ラズベリーパイ3 *リバース*リモートデスクトップ

ローカルマシン(A)とRaspberry PI 3(B)があります。
B HDMIモニターが接続されており、Raspbianオペレーティングシステムを実行しています。

Xアプリケーション(AでLibre Office Impressプレゼンテーションなど)を実行し、Bに接続されている画面に表示(表示)したいと思います。
A マシンの前でこれを行いたいです。

  • ssh -X to_AB出身ではなく、
  • Aの出力を得るためにBでVNCを使用しない。

私は以下を探していません:

  • Aでsshを使用してBでXアプリケーションを実行し、その出力をAに表示します(from_a $ ssh -X machine_Brdp / remmina / vncクライアントを介して実行可能)。
  • AでSSHを使用してfrom_a $ ssh machine_b from -> at_a_but_sshed_onto_b $ xhost + && export DISPLAY=:0 xeyes実行
  • Bへの直接物理アクセスを必要とするソリューション

私が試したことは、リモートXプロジェクトを実行できるように(B)を設定することでした...私が忘れたことがなければ、返されたnmap -p6000 machine_Bポートは次のようになります。閉鎖、Aのコマンドラインで次を実行します。

A_machine $ env DISPLAY=B_machine:0 xeyes

ここでB_machineが設定さ/etc/hostsれ、~/.ssh/config失敗します。

X11をコピーする手順を完全に見逃したようです。魔法のクッキー.Xauthorityで...しかし、このステップは必要ないかもしれませんが、より簡単な方法がありますか?

編集:@Rostislav Kandilarovの質問に答えて、lightdmがXサーバーを起動したようですが、最も早く確認できるのは月曜日であることを確認してください--nolisten tcp

答え1

(以下に編集された以前の回答)

追加の要件は、Bに触れることなく、Aでこれをすべて行うことです。 BでXサーバーを実行し、Aでアプリケーションを使用して接続するときの問題は、このXサーバーが入力デバイス(キーボード、マウス)のみを使用することです。雨。したがって、アプリケーションを使用するには不要な入力デバイスを使用する必要があります。

原則として、Aの入力デバイスを共有しようとしますが、構造が複雑になり始めます。

だから仮想ネットワークコントローラはいたくさんこの場合、より簡単です。

vnc4serverAをAに設定します。このサーバーは、AのアプリケーションのXサーバーとしても機能します。xvnc4viewerAで起動し、それを使用してアプリケーションを起動して制御します。 Bで別のvncviewerを起動してAのサーバーに接続すると、アプリケーションが表示されます。簡単にすることもできますdirectvnc(RaspPiのフレームバッファを直接使用し、Xを見回す必要がないためRaspPiの作業を減らします)、Bで既存のXサーバーを実行し続けたい場合は、他のサーバーを使用することもできますxvnc4viewer


最も簡単な方法は、リモートデスクトップを使用することです。仮想ネットワークコントローラ、すでにディストリビューションにパッケージとして含まれている可能性が高いです。これは通常、sshや他の手段を介したX転送よりもうまく機能します。なぜなら、それはよりよく圧縮され、回線でXプリミティブを使用しないからです。

もちろん、SSH経由または直接X転送を設定する方法はいくつかあります。たとえば、BからAにログインしてssh -XAからアプリケーションを実行し、Bに出力を表示できます。 (逆を除いたが、言及していないので、もちろんそれがあなたが望むものかどうかはわかりません)。

また、リモートセッション用にXサーバーを構成することもできます。XDMCP。または、xauth単一のアプリケーションがリモートXサーバーを使用できるように正しい設定を使用してくださいDISPLAY

しかし、まだVNCを最初に試してみることをお勧めします。

答え2

したがって、(B)でRaspbian OSを使用していて、疑わしい特定のカスタマイズを行っていない場合は、おそらくlightdmを使用しているでしょう。

もちろん、Xサーバーがtcp(ポート6000)でリッスンするようにlightdmに指示する必要があります。xserver-allow-tcp=trueグローバルセクションのconfファイルに設定することでこれを行うことができます[Seat:*]。明示的に指定する必要がありますxserver-command=X -listen tcp(次を参照してください。)ここ)。追加ファイルを選択する/etc/lightdm/lightdm.conf.d/*.confか、から直接選択できます/etc/lightdm/lightdm.conf

次に、セキュリティにあまり興味がない場合は、xhost +(B)で何らかの形式のコマンドを実行したい場合があります。たとえば、xhost + IP_OF_(A)LANの脆弱性に興味がある場合です。あなたはしないでください最初にtcpを介してXを直接使用しますが、sshがない場合は(B)で実行して(A)と(B)の間でMIT-MAGIC-COOKIEを交換できるため、ハッキングが少し難しくなりますxauth extract - $DISPLAY | ssh (A) xauth merge -

その後、lightdmを再起動するservice lightdm restartか、systemctl restart lightdm.serviceOSのバージョンに応じて再起動してください。

最後に - (B) Xorgが6000を受信して​​いることを確認してください。netstat -antp | grep -F 6000

関連情報