SSH:Xディスプレイではなく、リモート画面でGUIプログラムを起動します


11

問題

ほとんどの人は、クライアントのディスプレイを使用してリモートホストでGUIプログラムを実行するために、「-X」オプションを使用してssh経由でサーバーに接続することを望んでいます。サーバーに接続されている物理モニターでGUIプログラムを実行したい。これは可能ですか?より具体的にさせてください:

私の状況は次のとおりです。キーボードまたはマウスのないワークステーションがありますが、モニターが接続されています。ラップトップでSSHで接続し、xeyesやssvncなどのグラフィカルプログラムを起動して、ワークステーションのモニターに表示したいと考えています。

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

編集:追加情報

私はいくつかのことをもっと明確に説明する必要があります:

  • ワークステーションでsudoアクセスができます。必要に応じて何でもインストールできます。
  • ワークステーションはGNOMEユーザーインターフェイスを実行しています。
  • キーボードとマウスをワークステーションから切断する前に、GNOMEセッションにログインしました。そのため、現在ワークステーションのモニターにGNOMEデスクトップを表示できます。
  • ワークステーションのラップトップからプログラムを実行したくありません。ワークステーションでワークステーションプログラムを実行したい。xeyesまたは任意の実行可能ファイルがリモートサーバーで見つかり、リモートサーバーのモニターで実行する必要があります
  • これを実行すると、カーソルがインターフェイスに接続されない状況になることを理解しています。クリックできません。それで大丈夫です。

どんな助けも大歓迎です!


xhost +サーバーで実行しましたか?
karlphillip

これは興味深い質問だと思います。たとえば、Synergyを実行している3台のubuntu PCで、3つの間に同じキーボードとマウスを使用している場合...ログインすると、3回ログインする必要があります。メインPCにログインするときに、他の2つのPCにログインするスクリプトを作成すると便利です。
Sverre 2014年

回答:


5

どのxlib-applicationもxserverに接続する必要があります。次のいずれかの方法で、サーバーへの接続をアプリに通知する必要があります。

  • 環境変数DISPLAYの設定
  • 次のようなコマンドラインフラグを使用する -display

最初のxserverは通常、接続文字列 ':0'で到達できます。だから、これを試してください:

xeyes -display :0

またはこれ

env DISPLAY=:0 xeyes

XAUTHORITYX11サーバーは一時的なXauthorityファイルを使用するため、多くの場合(GNOMEのGDMで起動した場合など)、設定も必要になります。
user1686 2011

興味深いことに、$ DISPLAY変数を設定した後、xeyesを起動しようとすると、「エラー:ディスプレイを開けません」というメッセージに加えて、「プロトコルが指定されていません」というメッセージが表示されます。
xApple

@grawityアドバイスありがとうございます。コマンドを機能させるためにXAUTHORITYをどのように設定すればよいですか?
xApple、2011

5

このワークステーションはX Windowsサーバーを実行していますか?それがなければ、これはすべての問題です。

データをグラフィックス、ピクセル、色、場所に処理するには、何かが必要です。「モニター」は、それを実行するための何らかのソフトウェアがないと役に立たない。

そうだと思います。(しかしテキストから、そうでなければ確かに聞こえます)

「ワークステーション」と「ラップトップ」のホスト名(および/ etc / hostsまたはDNSなどを使用した適切なDNS解決)を指定します...そうでない場合は、マシンのホスト名を適切なIPアドレスに置き換えます。

ssh workstation
xhost +laptop

これで、この時点でワークステーションからログアウトできます。これにより、ワークステーションのXserverにアクセス権が設定され、「ラップトップ」が接続できるようになります。

DISPLAY env varを適切に設定してプログラムを開始すると、ラップトップで実行中に、アプリケーションをワークステーションに表示させることができます。

DISPLAY=workstation:0 xeyes

-または-

export DISPLAY=workstation:0
xeyes

どちらの方法でも機能します。後者の場合、そのシェルから起動すると、ワークステーションにX11に関連するすべてのものが表示されます。(それが理にかなっていると思います)

「xhost」行は、ラップトップがワークステーションのXserverに接続することを許可するためのものです。これがないと、Xサーバーをパーミッションなしで起動しない限り、パーミッションが拒否されます。これは実際にお勧めしません。データはラップトップとワークステーションの間で「プレーンテキスト」で送信され、傍受される可能性があるため、「xhost」保護は依然として不十分ですが、これは簡単な解決策です。

プライバシーが必要な場合は、ラップトップとワークステーションの間に何らかの暗号化されたトンネルを設定する必要があります(ディスプレイ用のポート6000:0)。うん、それはこの時点で奇妙になります。

制御された環境にいる場合は、「xhost + laptop」コマンドを使用するだけで十分です。そのコマンド「xhost +」の「laptop」部分を離れると、誰でもXserverに接続して表示できます。

マウスはワークステーションXserverに「接続」されておらず、ウィンドウを操作したり、クリックしたりできないことに注意してください。

マウスを接続したい場合は、x2x、synergy、vnc、またはX Windowsベースの画面共有アプリケーションなどをお勧めします。


ご回答有難うございます !あなたが正しい、私はさらにいくつかを指定する必要があるかもしれません:(1)ワークステーションはGNOMEユーザーインターフェースを実行しています(2)私のラップトップからプログラムを実行したくありません。Xeyesまたはワークステーションのモニターを備えたワークステーションで実行する必要のあるもの(3)問題ありません。カーソルは接続されません。
xApple

ああ、そうすれば、本当にワークステーションにsshし、DISPLAY変数を 'localhost:0'(または単に ':0')に設定して、アプリを起動するだけです。それでも、権限(xhost + localhostがおそらく最良の回答)とnohupまたは&!(バックグラウンドとdisown)、またはシェルからのbg / disownコマンドを使用して、ログアウトしたときにアプリが終了しないようにします。(もちろん、それがあなたの望むものでなければ)
lornix '27

ああ、だから多分私の問題は許可の問題だけです。ただし、ルートとして「xeyes」を実行すると、エラーメッセージは同じです。許可の問題を解決する回答を投稿すると、解決済みとマークすることができます!
xApple

ワークステーションのXウィンドウセッションにログインしている人はいますか?それがなければ、プログラム接続をリッスンするコードはまだアクティブではなく、ログインに関するものだけです。(私は大幅に簡略化しています!)ワークステーションにsshしてから「startx」を実行すると、ディスプレイに接続できる場合があります。もう1つの方法は、最低限のXサーバーを使用して「X:0&」と入力し、DISPLAY変数を設定して、「xhost + laptop」(または単に「xhost +」)を実行することです。しかし、それはほとんどの人にとって少し低レベルになっています。(テストに
最適

はい、キーボードとマウスを取り外す前に、ワークステーションのGNOMEセッションにログインしました。それでも、sshセッションから「startx」コマンドを実行してみました。エラーメッセージは次のとおりです。「X:ユーザーはXサーバーの実行を許可されていないため、中止します。」
xApple、2009
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.