ローカルマシンでアプリケーションを実行し、リモートディスプレイにGUIを表示する


35

ローカルデスクトップでアプリケーションを実行し、ラップトップ(リモートX)でGUIを表示することは可能ですか?

2つの異なるLAN接続されたマシンを使用してデュアルモニターのセットアップをエミュレートできるかどうか疑問に思っています。

相乗効果をインストールし、デスクトップキーボード/マウスを使用してラップトップを簡単に制御できますが、デスクトップ上で何かを実行し、ラップトップ画面にGUIを表示したいだけです。

Xでの限られた経験から、リモートマシンでプログラムを実行し、最初のディスプレイを使用して出力を表示できるが、その逆はできないことを知っています。

どんなポインタも大きな助けになるでしょう。ありがとうございました

PS Ubuntu 12.10でXFCE 4.10を実行

回答:


39

バリエーションA-Xウィンドウを別のディスプレイに撮影する:

  1. ラップトップのXserverがtcp接続のリッスンを開始することを確認してください。悲しいことに、ほとんどのディストリビューションではX11-Networkingはデフォルトで無効になっています。Xserverはディスプレイマネージャー(gdm、lightdm)によって起動されるため、ここで設定する必要があります。

    使用するディスプレイマネージャが何であれ、/ etc /内の一部の構成ファイルには、おそらく責任のあるXServerパラメーターが含まれます。grep -r 'nolisten tcp' /etc/ラップトップで実行して、どの構成ファイルが原因であるかを見つけ、それが言っている部分-nolisten tcp(行全体ではなく、このパラメーターのみ)を削除します。ラップトップでXを再起動します。

    これで、ラップトップのディスプレイがtcpポート6000で実行されるはずです(nmap -p6000 Laptopポートが「オープン」と報告された場合は、デスクトップPCで実行してみてください)。

  2. Xディスプレイをデスクトップコンピューターで使用できるようにします。X11は、認証メカニズムを使用してディスプレイへのアクセスを許可します。デスクトップPCがラップトップ上でWindowsを撮影できるようにする必要があります。通常、ディスプレイCookieを交換します。

    手始めに、この手順はノートブックを手で実行してください。DISPLAY変数とすべての概念を取得したら、sshでこれを実行できます。

    早くて汚い:xhost +desktops.computers.ip.addressラップトップで実行して、デスクトップコンピューターへのXアクセスを許可できます。ラップトップコンピューターのすべてのユーザーがラップトップXディスプレイをこのように使用できることに注意してください。これは、ノートパソコンのディスプレイにキーロガーをインストールするのに十分です。このメソッドはテストにのみ使用してください。

    正しく安全:xauth extract cookie-file :0ラップトップで実行して、ディスプレイアクセスシークレットを「cookie-file」にエクスポートします。Cookieをデスクトップマシンに転送します。を実行しますxauth merge cookie-file。または、1回の短いステップで(デスクトップから)ssh Laptop xauth extract - :0 |xauth merge -注:ラップトップとデスクトップがホームディレクトリを共有している場合(nfs経由など)、資格情報を交換する必要はありません。資格情報データベースは、ホームディレクトリの.Xauthorityファイルであり、異なるマシン間で共有できます。

  3. プログラムの実行:デスクトップPC runのexport DISPLAY=Your.Laptops.IP.Address:0ターミナルで、同じターミナルでXプログラムを実行します。ノートブックのディスプレイに表示されます。

バリアントB-ひねりを加えたSSHの使用。

SSHは、ローカルX11ソケット(通常はUnixドメインソケット)をリモートマシン上のローカルTCPソケットに転送し、表示Cookieをネゴシエートし、リモートマシンでDISPLAY-Environmentを設定することにより、X11転送を実行します。これにより、すべてのX11トラフィックがsshトンネルを介して暗号化されます。通常の使用例は、ローカルディスプレイをリモートマシンに転送することです(リモートアプリケーションがxウィンドウをローカルに表示できるようにすることを意味します)。

sshを使用する利点は、X-ServerをTCPリスンモードにする必要がないことです(UNIXソケットが使用されるため)。また、sshは資格情報の交換を処理します。

  1. デスクトップコンピューターからラップトップへのSSH(まだ-Xを使用する必要はありません)。
  2. リモートシェルでexport DISPLAY=:0これを入力すると、ノートブックで既に実行中のディスプレイがssh経由で取得したシェルで使用可能になります。ここでXコマンドを実行すると、ノートブック画面には既に表示されますが、ラップトップで実行されます(安全のために試してみてください)。
  3. このシェルsshからデスクトップコンピューターに戻り、今回は-Xを使用します。これで、sshセッションが開始されたマシン上にシェルが作成されましたが、今回はXが機能しています。xeyesまたはxcalcを実行してテストします。
  4. echo $DISPLAYXディスプレイがデスクトップコンピューターに表示されるようになりました。すなわち:10または:11。
  5. これで端末を最小化できます。export DISPLAY=:10デスクトップコンピューターで入力(取得したディスプレイ番号を確認)すると、同じシェルで後で実行する各プログラムがノートブック画面に表示されます。

    すべてのX11トラフィックはSSH経由で転送されるため、このバリアントは簡単ですが遅いです。

バリアントC-元のシンクライアントの概念:

ラップトップを使用して、完全にデスクトップコンピューターで実行されているデスクトップセッションを開くことができます。

  1. XDMCPブロードキャストに応答するようにデスクトップのディスプレイマネージャーを構成します。これを行う方法は、ディスプレイマネージャーによって異なります。一部のディスプレイマネージャーは、これをまったくサポートしていません(スリム)。XDM、KDM、WDM、GDMはサポートしています。

  2. ラップトップでX-Serverを起動し、デスクトップからディスプレイマネージャーを要求します。ネストされたX:Xephyr :1 -query desktopまたはXephyr :1 -broadcast 、ノートブックX-Serverをシャットダウンしてシステムターミナルに入るsudo Xorg :0 -broadcast

    ディスプレイマネージャーは、資格情報が生成および交換されること、およびすべてを確認します。おめでとうございます。デスクトップコンピュータからログインウィンドウが表示されるはずです。


2
ところで。UbuntuがWaylandに切り替わると、この素晴らしいX11機能はすべて機能しなくなります。NAtive waylandアプリケーションは、sshを介して転送することさえできなくなりました。
ポールヘンシュ

6
X-Serverを制御するためのグラフィカルツールチェーンがないことは皮肉ではありませんか?本当にGUIを使用したい場合は、最初にコマンドラインを支配する必要があります。
ポールヘンシュ

一般的なヒント:リモートディスプレイで最初に起動するプログラムは、アプリケーションのスターターです。すなわちlxpanelまたは何か。これにより、多くのコマンドライン作業が節約されます。
ポールヘンシュ

これはUbuntu 17の+でもまだ機能しますか?またはWaylandの予測は合格しましたか?
Xen2050

19

ssh X転送を使用して、目標を達成できます。同じサブネットにいる場合は、すぐに終了します。

ラップトップとデスクトップPCにsshサーバーとクライアントをインストールします

sudo apt-get install ssh

デスクトップPCに接続するには、ラップトップのターミナルを開き、次のように入力します

ssh -X username@desktop_pc_ip

そして、Firefoxの起動など、ターミナルを使用して任意のソフトウェアを起動できますfirefox。ターミナルに入力するだけです。


2
sshd構成ファイル(通常は/ etc / ssh / sshd_config)のX11Forwardingもyesに設定されていることを確認することを忘れないでください。
マトリックスモール

ユースケースは次のとおりです。たとえば、デスクトップでFirefoxを開きますが、ラップトップディスプレイでブラウザウィンドウを開き、デスクトップで実行したいです。私は、ワークスペースと同様の機能を探していますが、その代わりにローカルワークスペース(同じPCに4つの画面)のリモートワークスペース(ラップトップ)を使用する
ヴラドBalmos

2
また、x2xパッケージを試すことができます。別のマシンで1つのキーボードとマウスを使用できます。例:ssh -X user@host x2x -west -to :0
オハララ

@iUngiそのためにすでに相乗効果を使用しています、とにかく
Vlad Balmos

デスクトップのXサーバーへのアクセスを許可することにより、リモートマシンへの非常に広範囲のアクセスを許可していることに注意してください。サーバーが危険にさらされた場合、これを使用してデスクトップに侵入することもできます。X11転送は便利ですが、何をしているのかを考えて、デフォルトではオンにしないでください。
mc0e 14年

7

準備

(これは一度だけ行います)

デスクトップにSSHサーバーをインストールします

sudo apt-get install openssh-server


ラップトップから:

ssh -X username @ desktop_pc_ip

ターミナルでは、実行したものは何でもデスクトップに表示されますが、ラップトップに表示されます。デスクトップに座ったまま同じことをしたい(そしてラップトップにウィンドウを送信する)場合は、先に進みます。

ターミナルで実行します

エコー$ DISPLAY

次のように表示されます。

localhost:10.0

デスクトップから:

ターミナルを開いて実行します

DISPLAY=:10.0 firefox

これfirefoxにより、ラップトップでウィンドウが送信されますが、デスクトップで実行されます。入れた数字(例10.0)がecho結果と同じであることを確認してください


3

SSHと画面の組み合わせを使用して、必要な状況を取得しようとしています。

デスクトップで、インストール画面:

sudo apt-getインストール画面

そこから、新しいスクリーンセッションを開始します。

画面

そして、Firefoxを開きます:

fox

デスクトップで必要なすべてのFirefoxを使用し、ラップトップからコンピューターにSSHで接続します。

ssh -X username @ hostname

次のコマンドを入力して、実行しているスクリーンセッションを確認します。

画面-ls

screenセッションにログインします(screen -lsから得られた番号は1234です)

screen -x 1234

次に、ラップトップでfirefoxを使用し、デスクトップでターミナルを閉じます。


それを試した。ターミナルから画面を開き、デスクトップでFirefoxを起動し、ラップトップからデスクトップにsshedして、スクリーンセッションを接続しましたが、ラップトップにはウィンドウが表示されず、画面で実行中のプログラムからの出力のみが表示されます。
Vlad Balmos

あなたはそれを混ぜていました。待って...あなたの少なくとも一人がやった。デスクトップコンピューターに画面をインストールし、ノートブックを使用してデスクトップに接続ssh -Xし、sshセッションで画面を開始し、切り離してセッションを実行したままにします。次に、デスクトップコンピューターに手でスクリーンセッションを再接続し、何かを実行します。これは私の「SSH with a twist」の答えに似ています。画面を使用すると、もう少し便利になります。
ポールヘンシュ

3

Virtualglは、ターボVNCクライアント経由でアクセスできる追加の(バックグラウンド)デスクトップ(TightVNCスタイル)を作成します。リモートデスクトップタイプの取引として機能します->しかし、ネットワーク経由でスムーズなビデオ再生します。

リモート接続のCPUオーバーヘッドオフロードする方法を探しているので、ラップトップでコンピューターからアプリを実行できる場合、それが私がすることです。

http://www.virtualgl.org/

上記の/ dudeとして、SSH経由でデスクトップ環境をエクスポートすることもできます。


ありがとうございました。有望に見えます。ご覧になり、投稿し続けます。
Vlad Balmos

ええ、「TurboVNC」(そのコンポーネントVirtualGL)は、ビデオゲームや映画をプレイできるリモートデスクトッププログラムを検索した結果です。追加のモニターとして簡単に機能します。
-TardisGuy

1

オンラインでさらに掘り進んだ後、DMXに出会いました

ホームページから

Xdmxは、異なるマシン(それぞれが典型的なXサーバーを実行している)に接続された複数のディスプレイのマルチヘッドサポートを提供するプロキシXサーバーです。XineramaをXdmxで使用すると、複数のマシン上の複数のディスプレイが単一の統合画面としてユーザーに表示されます。


1
これは、インストール方法と使用方法の指示を与えることができれば、より良い答えになります。
fossfreedom

XmetaXは同様の機能を提供します。XdmxとXmetaXに代わるものはありますか?
マリウス14年

1

はい、可能です。ローカルコンピューターにインストールされたxclockの両方のLinuxコンピューターを使用しています。xclockをローカルで実行し、リモートLinuxコンピューターでクロックを表示しようとしています。

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

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