sshを介してリモートマシンから実行するとエラー「プロトコルが指定されていません」


10

以下のように、私は単にグラフィカル(GUI)アプリケーションを実行するためのスクリプトを持っています。

#cat gui.sh
#!/bin/bash 
./gui -display 127.0.0.1:0.0    

ローカルマシン(./gui.sh)から実行すると、問題なく実行されます。しかし、ssh経由でリモートマシンから実行しようとすると、次のエラーが発生しました。

[root@localhost]# ssh -f 192.168.3.77 "cd /root/Desktop/GUI/ && "./gui.sh""   
No protocol specified  
gdm: cannot connect to X server 192.168.3.77:0.0   
[root@localhost]#    

わからないのですが、どのプロトコルが要求しているか、何か不足していますか?スクリプトを使用せずにアプリケーションを起動して直接試しましたssh -f 192.168.3.77 "cd /root/Desktop/GUI/ && "./gui""が、結果は同じです。私のような様々な組み合わせを試してみましたssh -Yssh -fYそしてより多くが、結果は同じです!
次に、私のアプリケーションでは、プログラムが配置されているディレクトリに最初に移動する必要があるという条件があります。
解決策はありますか?

回答:


5

オプションの意味はプログラム-display 127.0.0.1:0.0によって異なりguiますが、「Xディスプレイに表示127.0.0.1:0.0」を意味する可能性が高いです。これは、TCP経由でアクセスされる最初のローカルXディスプレイです。これはほぼ間違いなく2つの理由で間違っています。まず、ローカルXの表示は:0、ではなく127.0.0.1:0、である必要があります。IPアドレスを含めると、トラフィックがローカルアクセスではなくTCPを通過するためです。XサーバーがTCP接続を受け入れるかどうかによっては、TCPを経由しても機能しない場合があります。その場合でも、ローカルディスプレイの最適化が失われます。

使用する表示は通常DISPLAY環境変数で示され、その変数は自動的に正しく設定される傾向があります。(あれば通常は、DISPLAY誤った値を持っているあなたはそれをいじりてきたので、それはです。主な例外は、の使用ですscreentmux。)

DISPLAYxlibの呼び出しで自動的に行われる傾向があるため、プログラムはおそらく環境変数の値を検索します。したがって、を呼び出すだけで./guiよいのです。スクリプトは何の役にも立ちません。プログラムが-display引数を主張する場合は、環境変数を使用するようにします。

./gui -display "$DISPLAY"

4

ssh -Yそしてssh -X良いスタートでなければなりませんが、あなたはだけでなく、あなたのXサーバを転送したのですか?

$ grep X /etc/ssh/sshd_config
X11Forwarding yes

そうしないと機能しません。

チェックするもう1つのことは、次のようなDISPLAY変数です。

$ echo $DISPLAY
$ localhost:10.0

これは後に実行されましたssh -Y。私はなくssh場合、同じ変数が空です-Y-X

sshのmanページ-Xとの違いについては、こちらを-Yご覧ください。


3

このビデオでは、エラーを段階的に解決する方法について説明します。見たくない場合は、以下のテキストに従ってください。

プロトコルが指定されていませんというエラーは、「ユーザーがGUIアプリケーションを起動する方法を知らない」、「ユーザーにGUIアプリケーションを起動する権限がない」ことを示しています。ビデオでは、GUIアプリケーションはdbcaです。

このビデオの重要な部分はxhost +、リモートシステムからローカルシステムにGUIをリモートで表示する権限をユーザーに付与するコマンドを実行することです。


6
xhost +あなたのディスプレイに接続するために誰にでもアクセスを与えます。私はお勧めしますxhost +local:[hostname or ip]
vimdude

これとこれは私のためにエラーを修正したものです。+1
ユグシン

1

Debian Jessie、以下も追加:

export XAUTHORITY=/.Xauthority

xhost +(クライアント側で)私の問題を修正しました
danger89

助かった、ありがとう!私のXAUTHORITYは/tmp/xauth-1000-_02つ追加のXセッションを開始した後、そのファイルは消えました-3 つ目だけが残りました。:私はそれを復元し、すべてのウィンドウの問題を修正するにはln -s ~/.Xauthority /tmp/xauth-1000-_0
joeytwiddle

0

同じ問題に見舞われ、DISPLAY環境変数を次のように変更することで解決しました。

export DISPLAY=:0.0

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