web-dev-qa-db-ja.com

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

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

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

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

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

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

追伸Ubuntu 12.10でXFCE 4.10を実行する

35
Vlad Balmos

バリアントA-Xウィンドウを別のディスプレイに撮影する:

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

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

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

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

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

    早くて汚い:ラップトップでxhost +desktops.computers.ip.addressを実行して、デスクトップコンピューターへのXアクセスを許可できます。 every userラップトップコンピューターでは、ラップトップ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のターミナルで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 $DISPLAYは指定を示し、ラップトップXディスプレイがデスクトップコンピューターに表示されます。つまり: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またはNotebook X-Serverをシャットダウンして、システムターミナルSudo Xorg :0 -broadcastを入力します。

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

39
Paul Hänsch

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

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

Sudo apt-get install ssh

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

ssh -X username@desktop_pc_ip

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

18
OHLÁLÁ

準備

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

デスクトップに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の結果と同じであることを確認してください

7
Nick Andrik

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

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

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

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

画面

そして、Firefoxを開きます:

fox

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

ssh -X username @ hostname

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

画面-ls

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

screen -x 1234

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

3
user530873

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

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

http://www.virtualgl.org/

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

3
TardisGuy

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

ホームページから

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

1
Vlad Balmos

はい、可能です。ローカルコンピューターに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
1