SSHを介したXmingによるX11転送?


11

SSHアクセスがあり、XmingフォントとともにXmingがインストールされています。ここの指示に従って、x11を転送するようにPuTTYを構成し、デスクトップをlocalhost:0 に配置するように指示しました

しかし、ログインした後startx、何も表示されません。むしろ、すべてが正常に機能しているように見える一連のメッセージを実行しますが、コンソールウィンドウに、待機状態のように機能するカーソルが表示されます。以上です。

何が欠けていますか?デスクトップを表示するために何かを開く必要がありますか?

デスクトップを仕事用のPCに転送して、ハードウェアを物理的に接続せずに昼食時にRasPiで遊ぶことができるようにしたいと考えています。助けてください。

編集:

Xmingを実行するとどうなるかをスクリーンショットで示していますstartx

Xming応答付きのSSH

編集2:

この答えは言うstartxそれがRasPi Xサーバを起動し、私はWindows上でXmingのサーバーを使用していますので、不要です。その場合、どうすればWindowsからXmingのデスクトップ/ GUIにアクセスできますか?Xmingが実行されていて、SSHが有効であっても、通常のコンソールプロンプトしか表示されないためです。多分私はそれを間違っています。私が欲しいのは、リモートWindows PCのウィンドウで実行されている完全な通常のRasPi GUIです。VNCを使用したくない。インターネットで転送しています。どうやってそこまで行くの?


2
ラズベリーからWindowsコンピューターへのグラフィカルセッションも実行したいと思っていました。そして、startxがXサーバーの起動を意味するというメッセージが表示されたら、Xプログラムを起動する必要があることを理解しました...では、... x-session-managerを起動しましょう そうすれば、離れたコンピューターにグラフィカルセッションができます。ありがとう、あなたは私に道を譲った!

回答:


15

WindowsコンピュータでXmingを起動すると、Xサーバーがすでに実行されています。を使用してRaspberry PiのXサーバーを起動する必要はありませんstartx。XアプリケーションはRaspberry Piで実行されますが、アプリケーションはWindowsのXming Xサーバーに描画されます。

リンクしたドキュメントには、WindowsでXサーバーを起動する必要があると記載されており、LinuxでXサーバーを起動する必要があるとは記載されていません。ドキュメントの最後の文で:

これで、ローカルデスクトップのホストからXアプリケーションを実行できるはずです。

「Xアプリケーション」とは、Xサーバー(を起動する必要があるstartx)ではなく、xclock、xeyesなどのアプリケーションを指します。

特別なXアプリケーションの1つは、LXDEの標準セッションマネージャを起動するlxsessionです(少なくとも私のRaspbianでは)。このアプリケーションをコンソールで開始すると、探している「完全なGUI」が得られます。

lxsession

個人的にはlxsession、を開始するのは便利ではないと思います。コンソールでXアプリケーションを開始する方がはるかに簡単です。


1
OK。これは理解できると思います。RaxPi xサーバーを起動するため、startxは不要であり、私はWindowsでXmingサーバーを使用しています。その場合、WindowsからXmingのデスクトップ/ GUIにアクセスする方法を教えてください。Xmingが実行されていて、SSHが有効であっても、通常のコンソールプロンプトしか表示されないためです。実際のアプリケーションは完全なGUIではなく、xmingでのみ実行すると言っています。多分私はそれを間違っています。私が欲しいのは、リモートWindows PCのウィンドウで実行されている完全な通常のRasPi GUIです。VNCを使用したくない。インターネット経由で転送しています。
zenbike

回答を更新しました。
asalamon74

(予想どおり)応答が少し遅い場合は、完全に機能します。ご協力ありがとうございました。
zenbike 2012

1
...そして...あなたのガイドでは、一度にSSH経由で単一のアプリケーションを実行することはお勧めの理由のthats
復活モニカ-アレクサンダー

1
@ asalamon74ありがとう!うわー!これは単なるやっかいなことです。めちゃくちゃ短いワイヤーでUSBに接続されたキーボードとマウスを扱う必要はありません。私は上記の設定でテレビの前に座っていました。今?私はただsshして、上司のようにGUIを実行します!!
Dheeraj Bhaskar 2013

1

Cygwin / Xの使用

Xmingに縛られていない場合は、代わりにCygwin / Xを使用してWindowsでXサーバーを実行できます。

Raspberry Piの準備

PowerShellを使用して、WindowsからRaspberry Piへの通常のSSH接続を確立してみます。

PowerShellとSSHを使用してWindows上のRaspberry Piにログインする

Raspbian Busterがに含まX11Forwarding yesれている/etc/ssh/sshd_config場合、Raspberry PiはX11アプリケーションのビジュアル出力をWindows上のXサーバーに転送することもできるはずです。

次のステップは、そのXサーバーをインストールする方法を示しています。

WindowsにCygwin / Xをインストールする

Cygwin / Xは、Raspberry Piで実行されているGUIアプリケーションを表示するWindows用のXサーバーを提供します。

  1. CygwinのWebサイトsetup-x86_64.exeからダウンロードして実行します

  2. Cygwinの「ローカルパッケージディレクトリ」には、を使用できますC:\Users\me\AppData\Roaming\Cygwin

  3. パッケージをダウンロードするには、お近くのサーバーを選択してください。

  4. 「表示」を「フル」に設定し、を検索しxinitます。

  5. [新規]列のドロップダウンメニューを使用して、値を「スキップ」からxinitの最新バージョンに変更します。

Cygwinでパッケージxinitをインストールする

  1. openssh同じ方法でパッケージをインストールします。

WindowsからRaspberry Piに接続する

  1. Windowsのスタートメニューを使用してXサーバーを起動しますCygwin-X → XWin Server。これはウィンドウを開きませんが、システムトレイに2つの新しいアイコンが表示されます。

システムトレイのXWinサーバーアイコン

  1. Cygwinターミナルを起動します。 Cygwin → Cygwin64 Terminal

  2. DISPLAYWindows上のXサーバーが実行される場所に環境変数を設定します。

    export DISPLAY=:0.0

  3. X11転送でRaspberry Piに接続します。

    ssh -Y pi@raspberrypi

Cygwinターミナルでログイン

SSHセッション内で、ThonnyのようなRaspberry PiでXアプリケーションを起動できます。

ThonnyがWindowsに転送されました

または、質問のコメントでuser1297が言及されているように、実行x-session-managerして、外部モニターのHDMI経由でRaspberry Piに接続するときに得られるエクスペリエンスをエミュレートできます。

Windowsに対応したRasbpianデスクトップ

最初にシェルに名前を入力せずにアプリケーションを直接起動する場合は、次のように使用します。

ssh -Y pi@raspberrypi x-session-manager

macOSの場合

XQuartzはmacOS用のXサーバーを提供します。

XQuartzをインストールし、ログアウトして再度ログインし(新しい価値をDISPLAY有効にするため)、BashからSSHでアプリケーションを起動します。

ssh -Y pi@raspberrypi thonny

XQuartzを使用したmacOS内のThonny


1

WindowsでXサーバーを既に実行している場合(Xmingの場合と同様)、Windows側はほとんど完了しています(ただし、いくつかの重要な詳細については以下を参照してください)。残りの重要な点は、pi上のX11アプリにX11データをWindows PCに送信するように指示することです。

これはDISPLAY環境変数を介して行われます。通常、Xサーバーとアプリが同じコンピューター上で実行されている場合、DISPLAYはサーバー番号(たとえば:0、Xサーバーを1つだけ実行している場合)またはサーバーと画面(例:0.0)を指定します。IPアドレスがないため、これはアプリのXライブラリにサーバーがローカルであり、それに応じて接続が確立されることを通知します(おそらく何らかの共有メモリトランスポートを介して)。

X11データをリモートノードに送信するようアプリに指示するには、DISPLAY変数にIPアドレスを含めます。たとえば、export DISPLAY=192.168.1.10:0。これにより、ノード192.168.1.10のXサーバー#0へのTCP接続を開く必要があることがX11アプリに通知されます。DNSホスト名は、ネットワーク上にある場合はここで問題ありません。

2つの潜在的な問題

最初の段落で書いたように、Xmingを実行するだけでは十分でない場合があります。追加の構成が必要になる場合があります。

1つ目は、TCPを介したリモートノードからの接続を受け入れるようにX11サーバーを構成する必要があることです。今日配布されている多くのXサーバー(Xmingについては知りません)は、明示的に設定しない限り、ローカルで実行されているアプリからの接続のみを受け入れます。開いているすべてのソケットが攻撃の潜在的なベクトルであるため、これはセキュリティ機能です。

2つ目は、X11サーバーが接続を許可されているホスト/ユーザーのデータベースを維持していることです。Raspberry PiのIPアドレスをホワイトリストに登録する必要があります。これは、xhostWindowsのXmingから、たとえばxtermで実行されているコンソールからコマンドを実行することで実行できます。入力xhost +してこのセキュリティチェックを無効にすることもできますが、世界中のどこからでもアプリがディスプレイへの接続を開くことができるため、危険です。誰もが信頼できるLANのファイアウォール(自宅など)の背後にいる場合は、これが最も簡単な方法xhostですが、そうでない場合は時間をかけて適切に構成してください。

代替: ssh -Y

上記のアプローチを使用すると、X11アプリはすべて、XサーバーへのTCP接続を開こうとします。これらの接続は安全ではありません。LANスヌーピングパケットの誰かがパケットを傍受する可能性があります。

この問題を解決するには、Raspberry piでDISPLAY変数を設定する代わりに-Y、接続するときにパラメーターを使用します(例:)slogin -Y hostname。-Yパラメーター(-Xのような)は、X11トラフィックを運ぶためのノード間にトンネルを作成します。これにより、X11トラフィックが暗号化されて安全になります。また、独自のDISPLAY環境変数を割り当てて、アプリがトンネルを使用するようにします。xhost(Xサーバーに関する限り)接続がローカルで(SSHトンネルの発信側から)発生しているため、いじる必要がなくなる場合もあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.