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 script하면 g0=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 DISPLAY.DISPLAY=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 연결을 설정할 때 원격 측에서 두 가지 일이 발생해야 합니다.

  1. 원격 장치는 sshdX11 프록시(일반적으로 로컬 연결만 허용)를 첫 번째 무료 TCP 포트 번호 6010 이상으로 설정하고 DISPLAY 변수를 로 설정합니다 localhost:<port number - 6000>. 이는 실제 디스플레이에 대한 연결을 찾을 위치를 원격 X11 응용 프로그램에 알려줍니다.
  2. 원격 장치는 sshdX11 응용 프로그램에서 사용할 MIT-MAGIC-COOKIE를 생성하고 클라이언트가 이를 사용할 수 있도록 파일에 배치합니다(일반적으로 xauth원격 시스템에서 명령을 사용하여). 이 파일의 기본 경로는 이지만 ~/.Xauthority환경 변수에 전체 경로 이름을 설정하는 경우 XAUTHORITY사용자 정의 경로를 사용할 수도 있습니다 . X11 클라이언트가 이 파일을 찾거나 액세스할 수 없으면 연결에 실패합니다. 각 연결마다 새 쿠키를 생성합니다. 이전 쿠키 파일은 작동하지 않습니다.

XQuartz가 없는 Mac 시스템에서는 X11 응용 프로그램에 대한 오류 메시지가 다소 오해를 불러일으킬 수 있는 이러한 유형의 문제가 발생할 수 있습니다. 응용 프로그램은 DISPLAY 변수를 읽고 해당 변수의 값을 기반으로 로컬 TCP 포트 6011에 성공적으로 연결했으며 Xauthority 파일을 찾아 실제 X11 디스플레이 서버라고 생각되는 서버에 쿠키를 제공했습니다(실제로는 원격 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 응용 프로그램은 이를 표시할 필요가 없습니다. 사용 권한이 부여되면 이미지 창이 팝업됩니다.원격 컴퓨터디스플레이가 너무 멀리 떨어져 있어서 유용하지 않을 수 있습니다.

관련 정보