ssh -X「Xtエラー:ディスプレイを開けません::0.0」


9

xtermsshでリモートサーバー(Ubuntuサーバー10.04)を開こうとしています。

ssh -X name@machine xterm

しかし、返されるエラーは次のとおりです。

xterm Xt error: Can't open display: :0.0`

私はグーグルで見つけたものすべてを試しました。まだこのエラーが発生します。DISPLAY変数は自動的に設定されるべきですよね?

の一部sshd_config

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

何かアドバイス?


ssh を実行xtermする前に現在のターミナルで実行できますか?
enzotib 2011

@belacqua:必須ではありません。私は通常、リモートヘッドレスサーバーに接続し、ローカルXサーバーでリモートXアプリケーションを簡単に実行できました。
enzotib 2011

@enzotib-ありがとう 知らなかった。
belacqua 2011

@enzotib申し訳ありませんが、コメントはありませんでした。はい、ローカルマシンでxtermを開くことができます
Fabian

回答:


8

sshが接続を確立できる場合はDISPLAY、適切な値に設定されます。X11DisplayOffset10(デフォルト値)に設定したので、sshは10から始まる最初の利用可能なディスプレイを使用します。10¹未満の値が表示される場合、少なくともsshによって設定された通常のX11転送に何かが干渉しています。上書きするDISPLAY。値:0(または:0.0、ドットの後の部分は無関係)は、マシンで開始された最初のディスプレイを示します。これは、通常、マシンのコンソールのアクティブセッション(またはグラフィカルログインプロンプト)です。

観察される動作の最も可能性の高い説明は、シェル構成ファイルの1つが設定していることですDISPLAY。最も明白な原因は~/.bashrc(シェルがインタラクティブでない場合でも、bashの癖のためにbashの親がrshdor sshdである場合は常に実行される)です。環境変数を定義する別のファイルは/etc/environmentです。その場合、解決策は明白ですDISPLAY。そこに設定しないでください。(DISPLAY手動で設定する必要があるケースはほとんどありません。)

他にもエキゾチックな説明があります。これは、ログインシェルをscreen(理論的にはかわいいアイデアですが実用的ではありません)に変更し、DISPLAY画面内に強制的に設定するシェル初期化ファイルがある場合に発生する可能性があります(そのような良いアイデアではありません)。これは、クライアントから送信された環境変数(のAcceptEnvディレクティブsshd_config)を受け入れるようにサーバーを構成し、クライアントがを送信DISPLAYしていて、X接続を確立できなかった場合にも発生する可能性があります。または、のcommandディレクティブを介してサーバーに環境変数を設定した場合にも発生する可能性があり~/.ssh/authorized_keysます。またはxtermスクリプトにすることもできます。

¹ またはの値はX11DisplayOffsetサーバー構成にありますが、デフォルトから変更されることはほとんどありません。


1
あなたが言及するさまざまな問題を修正するためにリストされた方法があると役に立ちます。
ジョージストッカー2013年

@GeorgeStockerこれらの問題はすべて「構成ファイルにいくつかの設定があります」という形式であるため、これらすべての修正は設定を削除または変更することです。特に、特定できるが修正できないものはありますか?
Gilles 'SO-邪悪なことをやめなさい'

に表示さDISPLAY=localhost:11.0れますenvが、その関連性と、変更する必要DISPLAY 10.0があるかどうかは不明です。
ジョージストッカー2013年

@GeorgeStocker次に、症状がこの質問と一致しません。回答を更新して、この回答が適用されるカットオフ値が10であることを明確にしました。11はここでの期待値です(おそらくX転送を使用した2番目のアクティブなSSH接続)。
ジル 'SO-邪悪なことをやめる'

実行DISPLAY=:0 xtermしていてもxterm: Xt error: Can't open display: :0エラーが発生するので、環境変数に問題はありません。
Dan Dascalescu 2017

3

あなたのコマンドはうまくいくはずです、または少なくとも私にとってはうまくいきます。代わりにこれを試してください:

ssh -Y user@machine xterm

編集(1):

これを試して:

ssh -X user@machine env

これですべての環境が表示されます。そこにはさまざまなSSHのものがあり、DISPLAYもあるはずです。DISPLAYは10.0である必要があります。

これを試すこともできます:

ssh -X user@machine DISPLAY=10.0 xterm

試してみました-Yが、うまくいきませんでした。私はまだ得るCan't open display: :0.0
ファビアン

ローカルマシンは何を実行していますか?:0.0は、リモートXサーバーではなくローカル Xサーバーのデフォルトであるため、懸念されています...
ed。

私はUbuntu 10.04、Linux Mint 11、またはMac OS X 10.7を使用しています。使い方は場所(職場/自宅)によって異なりますが、エラーはすべて同じです
Fabian

答えを編集します...(1)
ed。

私のDISPLAY変数はlocalhost:10.0
Alexis Wilkeが2016年

2

Xのアクセス制御はおそらく邪魔です。

ファイル名を指定して実行xhost +(パッケージからx11-xserver-utils完全に無効のアクセス制御に)。



1

xauthがインストールされていないことがわかりました。


0

また、クライアント側にX11がインストールされていることを確認してください。MacをOS X Mountain Lionにアップグレードしたときにこの問題が発生していました。Mountain LionはX11を削除しているため、オープンソースのX Quartzプロジェクトを介して再度インストールする必要があります。 http://xquartz.macosforge.org/landing/


-1

最初に接続を開き、確立されたopen xtermを開く必要があります。


お返事ありがとうございます。「接続を開く」とはどういう意味ですか?使用時と ssh -X name@machine 接続後xterm、同じエラーが発生します。もしかして?;)
Fabian

いいえ、最初に接続しなくても機能するはずです。
enzotib 2011

@ファビアン-それは彼が意味したことだと私は信じています。
belacqua 2011

VNC接続が必要だと思います。
nanofarad 2012

@enzotib、まあ...実際sshに最初に接続してから、そのssh環境でxtermが起動されます。どちらの方法でも、ssh -X remote最初に使用する場合にのみほとんど同じです。次に、がリモートコンピュータで適切に設定されてecho $DISPLAYいることを確認するために確認するかどうかを確認できます。$DISPLAYssh -X
Alexis Wilke、2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.