MIT-MAGIC-COOKIE-1 キー %WIDGET_Control 無効: X Windows ディスプレイに接続できません: localhost:11.0

MIT-MAGIC-COOKIE-1 キー %WIDGET_Control 無効: X Windows ディスプレイに接続できません: localhost:11.0

ターミナルウィンドウでリモートでIDLを実行しようとしています。端末にポップアップを表示せずにリモートでpngファイルの画像を作成したいと思います(何らかの理由でポップアップ画像が自分のコンピュータで正しく機能していないかどうかわかりません)。私はssh -Xとssh -Yを使用しましたが、同じエラーが発生しました。スクリプトは次のとおりです。

set_plot,'ps'
device,/color,bits=8,xs=80,ys=60
device,filename=‘test.eps'

loadct, 4
!p.charsize = 1.2

!p.color = 120

lfile = FILE_LINES(filename1)

openr,1,filename1
ar1=fltarr(6,lfile)
readf,1,ar1
close,1

Xcoord=ar1[0,*]     
Ycoord=ar1[1,*]     

h2d=hist_2d(Xcoord,Ycoord,bin1=5, bin2=5) 
h2d = CONGRID(h2d, MAX(Xcoord), MAX(Ycoord))
g0=image(h2d)

device,/close

end

このscript.proを実行する.r scriptg0=image(h2d)

% Compiled module: $MAIN$.
% LOADCT: Loading table BLUE/GREEN/RED/YELLOW
% Compiled module: HIST_2D.
Invalid MIT-MAGIC-COOKIE-1 key% WIDGET_CONTROL: Unable to connect to X Windows display: localhost:11.0
% IMAGE: WIDGET_CONTROL: Unable to establish X Connection.
% Execution halted at: $MAIN$             42 /home/script.pro

%Invalid MIT-MAGIC-COOKIE-1 key% WIDGET_CONTROL: Unable to connect to X Windows display: localhost:11.0 私はこの線がこの線が指すものとは異なる問題を指していると思います % IMAGE: WIDGET_CONTROL: Unable to establish X Connection

(同様のStackexchangeの質問) [https://unix.stackexchange.com/questions/199891/invalid-mit-magic-cookie-1-key-when-trying-to-run-program-remotely]のアドバイスに従って試しました。次のように問題を解決しましたが、まだ問題は解決されていません。

  1. DISPLAY環境変数が正しく設定されているようですenv | grep DISPLAYDISPLAY=localhost:11.0
  2. この行はexport DISPLAY=desktop:0.エラーを発生させますexport: Command not found
  3. 実行する前の行がxhost +local:提供されますInvalid MIT-MAGIC-COOKIE-1 keyxhost: unable to open display "localhost:11.0
  4. 私も試してps aux | grep bin/X | grep -v grepみました。
root      1745  0.0  0.1 323536 22172 tty1     Ssl+ Feb06   1:43 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-DUUgHB/database -seat seat0 -nolisten tcp vt1
  1. 私も試してps aux | grep /Xorg | grep -v grepみました。
root       758  0.0  0.0 225860  2872 ?        Ss   Feb06   0:00 /usr/bin/abrt-watch-log -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD

別のコンピュータ(端末ウィンドウを介して同じリモートコンピュータに再接続されています)で同じスクリプトを実行しようとすると、行は受信されませんが、 %Invalid MIT-MAGIC-COOKIE-1 key% WIDGET_CONTROL: Unable to connect to X Windows display: localhost:11.0まだ% IMAGE: WIDGET_CONTROL: Unable to establish X Connection

だからこの行は私のコンピュータの視覚的な問題だと思いますMIT-MAGICが、widget_controlとにかくエラーをデバッグすることはできません。少なくともウィジェットの問題を解決できる場合は、他のコンピュータでプロットを作成することもできます。ありがとうございます。

telcoMの細かい説明に心から感謝します。今私はいくつかをよりよく知っています。 MacにXQuartz(XQuartz 2.7.11)を再インストールしました。 MIT-MAGIC-COOKIEのエラーは消えているようですが、同じスクリプトを使用してIDLライブラリに関連するエラーが発生します(以前と同じ行、imageコマンドで実行されたようです)。

% Compiled module: $MAIN$. 
% LOADCT: Loading table BLUE/GREEN/RED/YELLOW 
% Compiled module: HIST_2D. 
libGL error: No matching fbConfigs or visuals found 
libGL error: failed to load driver: swrast 
% Loaded DLM: PNG. 
% WIDGET_EVENT: Failure to acquire window rendering context. 
% IMAGE: WIDGET_EVENT: Unable to acquire device context. 
% Execution halted at: $MAIN$

Idlポップアップウィンドウが開き(黒)、保存されたファイル(45kb)は(空白)ページです。 Google検索によるhttps://www.l3harrisgeospatial.com/Support/Forums/aft/4922ただし、IDLライブラリにアクセスできません。 IDL設定を変更するには、システム管理者に連絡する必要がありますか?

答え1

X11グラフィックを表示するには、Macに次のものが必要です。Xクォーツインストールする。 X11ですサーバーの表示:事実上、ローカルおよびリモートX11アプリケーションがディスプレイウィンドウを描画できるキャンバスです。 Apple は Mac SSH が X11 転送を設定するように設定しており、XQuartz は必要に応じてまだ実行されていない場合は通常自動的に起動します。

XQuartzはMacOSの一部でしたが、今では別のオープンソースプロジェクトです。

X11転送を使用してSSH接続を確立するときは、リモート側で2つのことが必要です。

  1. リモートデバイスは、sshdX11プロキシ(通常はローカル接続のみを許可)を最初の無料TCPポート番号6010以上に設定し、DISPLAY変数をに設定しますlocalhost:<port number - 6000>。これは、実際のディスプレイへの接続を見つける場所をリモートX11アプリケーションに通知します。
  2. リモートデバイスはsshdX11アプリケーションで使用するMIT-MAGIC-COOKIEを作成し、クライアントがそれを使用できるようにファイルに配置します(通常はリモートxauthシステムでコマンドを使用して)。このファイルのデフォルトパスですが、~/.Xauthority環境変数にフルパス名を設定している場合は、カスタムXAUTHORITYパスを使用することもできます。 X11 クライアントがこのファイルを検索またはアクセスできない場合、接続は失敗します。接続ごとに新しいCookieを作成します。古いCookieファイルは機能しません。

XQuartzのないMacシステムでは、X11アプリケーションのエラーメッセージが多少誤解を招く可能性があるこの種の問題が発生する可能性があります。アプリケーションはDISPLAY変数を読み取り、その変数の値に基づいてローカルTCPポート6011に正常に接続し、Xauthorityファイルを見つけて実際のX11ディスプレイサーバーと思われるサーバーにCookieを提供しました(実際にはリモートsshdX11転送プロキシです)。 )。この時点で、リモート側はsshd暗号化されたトンネルを介して最初のX11要求をローカルシステムに転送し、ローカル側には実際のXQuartzディスプレイサーバーがないことがわかります。

AInvalid MIT-MAGIC-COOKIE一般的なエラーメッセージにはエラーコードはありません。

いくつかのトラブルシューティング手順について:

わかりましたexport DISPLAY=desktop:0。エラーが発生しましたexport: Command not found

これは、リモートユーザーアカウントで設定されたシェルがshPOSIX構文を使用するシェルではない可能性があることを示します。ただし、この方法でDISPLAY環境変数を設定することは、SSHトンネルをスキップし、X11アプリケーションにホストのポート6000でX11ディスプレイサーバーへの暗号化されていない直接TCP接続を作成するように指示することを意味しますdesktop安全ではない多くの最新のX11ディスプレイサーバーは、TCP接続をまったく受信しないか、少なくともローカルシステムからの接続のみを受信します。特別な措置を講じることで、これらの安全でないレガシーアプローチを操作することは可能ですが、あなたはそうしたくありません。

実行する前の行がxhost +local:提供されますInvalid MIT-MAGIC-COOKIE-1 keyxhost: unable to open display "localhost:11.0

xhostこのコマンドは、X11ディスプレイサーバーへの有効な接続がある場合にのみ使用できます。あるユーザーが別のユーザーが同じモニターに接続できるように、「ドアを開く」ために使用できます。これは、GUIプログラムを実行する前にリモートホストで他のユーザーアカウントを使用またはsu切り替える必要がある場合にsudo便利ですが、それは許可されますみんな環境変数で識別されたポート/ソケットDISPLAYからディスプレイサーバーにアクセスできる人。必ずしも必要な場合でなければ、これをやりたくありません。最初に有効なX11ディスプレイ接続がない場合、これはまったく役に立ちません。

私も試しましたps aux | grep bin/X | grep -v grep

これは、リモートシステムで実行されているX11ディスプレイサーバーがあることを示します。私自身表示 - リモートX11アプリケーションはそれを表示する必要はありません。権限が付与されると、イメージウィンドウがポップアップ表示されます。リモートコンピュータディスプレイが離れすぎて便利ではない可能性があります。

関連情報