Raspberry pi 3 *リバース* リモートデスクトップ

Raspberry pi 3 *リバース* リモートデスクトップ

ローカルマシン (A) と Raspberry PI 3 (B) があります。B
には HDMI モニターが接続されており、Raspbian OS が実行されています。

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

  • ssh -X to_ABからではなく、
  • また、BからVNCを使用してAからの出力を取得することもできない

探していないもの:

  • from_a $ ssh -X machine_BA からの ssh を使用して B で X アプリを実行し、その出力を A に表示する (これは、rdp/remmina/vnc クライアントのいずれかによって実行できます)
  • A から ssh を使用して B で X アプリを実行し、その出力を B に表示します (これは、たとえば、ssh で表示をエクスポートし、xhost を適切に構成することによって実行できます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 サーバーは B に接続された入力デバイス (キーボード、マウス) のみを使用するという問題が生じます。そのため、アプリケーションを使用するには、これらの入力デバイスを使用する必要がありますが、これは望ましくありません。

原理的には、A からの入力デバイスを共有することもできますが、その場合、構造が非常に複雑になり始めます...

それでVCたくさんこの状況では簡単です。

A にをセットアップしますvnc4server。このサーバーは、A 上のアプリケーションの X サーバーとしても機能します。Axvnc4viewerで を起動し、それを使用してアプリケーションの起動と制御を行います。B で別の vncviewer を起動し、それを A 上のサーバーに接続すると、アプリケーションが表示されます。これは、directvnc(RaspPi のフレームバッファーを直接使用し、X を経由する追加の迂回がないため、RaspPi の負荷が軽減される) のように単純なものでもかまいません。または、B で既存の X サーバーを実行し続けたい場合は、別の を使用しますxvnc4viewer


最も簡単な方法は、次のようなリモートデスクトップを使用することです。VCおそらく、ディストリビューションのパッケージとして既に利用可能になっています。これは通常、ssh などによる X 転送よりもはるかにうまく機能します。これは、圧縮がはるかに優れており、回線上で X プリミティブを使用しないためです。

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

リモートセッション用のXサーバーを設定するには、DMCP のxauthまたは、適切な設定を使用して、単一のアプリケーションでリモート X サーバーを使用するようにしますDISPLAY

ただし、まずは VNC を試してみることをお勧めします。

答え2

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

確かに、Xサーバーがtcp(ポート6000)をリッスンするようにlightdmに指示する必要があります。これは、xserver-allow-tcp=trueconfファイルのグローバルセクションで設定することで行います[Seat:*]。明示的に指定する必要がある場合もありますxserver-command=X -listen tcpここ/etc/lightdm/lightdm.conf.d/*.conf) 内の任意の追加ファイルまたは 内の直接ファイルのどちらかを選択できます/etc/lightdm/lightdm.conf

次に、セキュリティをあまり気にしないのであれば、おそらく(B)xhost +のような何らかのコマンドを実行する必要があるでしょうxhost + IP_OF_(A)。LANの脆弱性を気にするのであれば、貴方はするべきではないまず最初に TCP 経由で X を直接使用しますが、 SSH なしで (B) 上で実行することにより、(A) と (B) の間で MIT-MAGIC-COOKIE を交換することで、ハッキングの難易度を少し高めることができますxauth extract - $DISPLAY | ssh (A) xauth merge -

次に、 OS のバージョンに応じてservice lightdm restartlightdmを再起動します。systemctl restart lightdm.service

最後に、Xorgが6000でリッスンしているかどうか(B)を確認します。netstat -antp | grep -F 6000

関連情報