web-dev-qa-db-ja.com

Putty-> Cygwin X11転送「ディスプレイを開けません」エラー

WindowsマシンでPuTTYを使用して別のサーバーにSSHで接続しています。そこに到着したら、X11転送を使用してウィンドウをコンピューターにポップしようとしています。リモートシステムは、他の多くのユーザーが同じ方法で正常に使用できる大規模なシステムであるため、問題にはなりません。

問題なくPuTTYを介してシステムにログインし、cygwinでstartxwinを実行します。ただし、PuTTYでxtermを実行すると、エラーxterm Xt error: Can't open display: localhost:##.0が表示されます。シャープ記号は、ログインするたびに値が変わる2つの整数です。

  • PuTTY設定でX11転送を有効にしています
  • 「Xの表示場所」をlocalhost:0に設定してみました
  • CygwinのX11パッケージをダウンロードすることを確認しました
  • startxの代わりにstartxwinだけを使用してみました
  • setenv DISPLAY localhost:0setenv DISPLAY my.ip.addressを試しました

残念ながら、問題は解決しません。このトピックに関するグーグルリソースを使い果たしたので、どんな助けにも感謝します。ありがとう!

11
Tyler

最近のCygwinの更新により、XサーバーがTCP接続をデフォルトでリッスンしないように変更されました。代わりに、CygwinのXは(Cygwinの実装)Unixドメインソケット、およびPuTTY(ネイティブWindowsプログラムとして)を使用しますこれらの使い方を知りません。

Cygwin X FAQ および Cygwinmailinglists に詳細があります。

私の解決策は startxwin を使用してXを起動する標準のCygwinショートカットを取ることでした:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

そして、それを私の希望するオプションでxinitを直接呼び出すことで置き換えます(-listen tcpを追加して-authを削除します):

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"

これはCygwinの新しいデフォルトよりも安全ではありません。これはシングルユーザーシステムでのみ使用する必要があり、XWinへの接続をブロックするようにファイアウォールを構成するのが賢明です。

11
Josh Kelley

Josh Kelleyの発言の代わりに、startxwinファイルを編集して、「-listen tcp」をデフォルトのサーバー引数に追加することもできます。

旧:defaultserverargs = "-multiwindow"

新規:defaultserverargs = "-multiwindow -listen tcp"

また、認証を有効にして、PuTTYにstartxwinスクリプトで作成された認証ファイルを指定する必要がありました。鉱山はここにありました:c:\ cygwin64\home\USERNAME.Xauthority

このファイルは再作成されるため、xserverをリセットした後、PuTTYセッションを再起動する必要があります。

セキュリティのため、PuTTYが転送するのはlocalhostからの接続のみを許可することもできます。

6
Sir Launcelot

「X表示場所」をlocalhost:0に設定してみました

代わりに「X表示場所」を「:0.0」に設定してみてください。

export DISPLAY=:0.0

Josh Kelley が言及 Cygwin X FAQ

3.13。アップグレードしたが、Xクライアントが接続できない

A1:

Xサーバー1.17以降、サーバーはデフォルトでTCP/IP接続をリッスンせず、UNIXドメインソケットでのローカル接続のみを受け入れます。

ローカルクライアントの場合、DISPLAY = localhost:0.0、DISPLAY = 127.0.0.1:0.0、DISPLAY = :: 1:0.0などではなく、DISPLAY =:0.0を使用します。

4
user3248784

これはxming用ですが、おそらくこのよくある質問は助けになりますか?その背後にある考え方は同じですが、ローカルマシンでcygwinの代わりにxmingを使用しています。 https://wiki.utdallas.edu/wiki/display/FAQ/X11+Forwarding+using+Xming+and+PuTTY

0
Paul

他の人が言ったように、トリックは-listen tcpをサーバーの引数に追加することです。ただし、startxwin -- -listen tcpを呼び出してstartxwinに残りのxinitコマンドをビルドさせることにより、これを行うことをお勧めします。

スタートメニューのショートカット:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
0
Dominic Lemire