
ローカルマシン (A) と Raspberry PI 3 (B) があります。B
には HDMI モニターが接続されており、Raspbian OS が実行されています。
A で X アプリケーション (A にある Libre Office Impress プレゼンテーションなど) を実行し、B に接続された画面に表示させたいと考えています。
これを A マシンの前で実行したいのです。
ssh -X to_A
Bからではなく、- また、BからVNCを使用してAからの出力を取得することもできない
探していないもの:
from_a $ ssh -X machine_B
A からの 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 -X
B から A 経由でログインし、A でアプリケーションを実行し、出力を B に表示することができます。(逆方向は除外しましたが、これについては何も言っていないので、それが必要なのかどうかはよくわかりません)。
リモートセッション用のXサーバーを設定するには、DMCP の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
。
次に、セキュリティをあまり気にしないのであれば、おそらく(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 restart
lightdmを再起動します。systemctl restart lightdm.service
最後に、Xorgが6000でリッスンしているかどうか(B)を確認します。netstat -antp | grep -F 6000