GUI가 로컬로 표시되도록 원격으로 응용 프로그램을 시작하는 방법

GUI가 로컬로 표시되도록 원격으로 응용 프로그램을 시작하는 방법

이것은 초보자용 질문입니다. 저도 알고 있습니다. 하지만 검색해 보니 좌절감을 느끼고 있습니다. 나는 Lunux에 대해 잘 알고 있지만 XServer를 다룰 필요는 없었습니다.

질문 1:

OSX에서 사용자 알파로 UBUNTU 14.04 데스크톱 시스템에 SSH로 연결합니다.

사용자 알파도 해당 데스크탑에 로컬로 로그인되어 있습니다.

UBUNTU 시스템에 표시되어야 하는 애플리케이션을 (내 터미널을 통해) 실행하고 싶습니다(로컬로 로그인한 사용자의 로컬 디스플레이에 표시되도록).

오늘 OSX 터미널에서 이 작업을 수행하면 다음 오류가 발생합니다.

15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation     which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>

참고: 로컬 터미널(UBUNTU)에서 수행하면 정상적으로 작동하므로 프로그램에는 아무런 문제가 없습니다.

질문 2:

UBUNTU 시스템에 헤드리스가 있는 경우 창을 다른 시스템(예: Mac)으로 전환하려면 어떻게 해야 합니까?

고마워요 피터

답변1

두 번째 질문: SSH로 연결할 때 -X(또는 신뢰할 수 있는 연결의 경우 -Y) 매개변수를 추가하고 Mac에 X11이 있는지 확인하세요. 예:

ssh -X [email protected]

그러면 X11 창이 Mac의 로컬 X 서버에 표시되도록 라우팅됩니다.

보다:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html

첫 번째 질문의 경우:

디스플레이와 권한

X 프로그램이 X 디스플레이에 연결하려면 두 가지 정보가 필요합니다.

  • 디스플레이 주소가 필요합니다. 로컬로 로그인한 경우 일반적으로 :0, 원격으로 로그인한 경우 :10, :11 등입니다(그러나 숫자는 활성화된 X 연결 수에 따라 변경될 수 있음). ). 디스플레이의 주소는 일반적으로 DISPLAY 환경 변수에 표시됩니다.

  • 디스플레이에 대한 비밀번호가 필요합니다. X 디스플레이 비밀번호를 매직 쿠키라고 합니다. 매직 쿠키는 직접 지정되지 않습니다. 항상 "display :42 has cookie 123456" 형식의 레코드 모음인 X 권한 파일에 저장됩니다. X 권한 파일은 일반적으로 XAUTHORITY 환경 변수에 표시됩니다. $XAUTHORITY가 설정되지 않은 경우 프로그램은 ~/.Xauthority를 ​​사용합니다.

다음에서 추출됨: https://unix.stackexchange.com/a/10126

자세한 설명은 해당 게시물을 참조하세요.

답변2

원격으로 DISPLAY 환경 변수를 내보내 사용할 디스플레이를 설정해야 합니다.

예.export DISPLAY=:0

두 번째 질문의 경우 가장 쉬운 방법은 우분투에 VNC 서버를 설정하고 VNC 클라이언트를 사용하여 Mac에서 연결하는 것입니다.

어떻게:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04

답변3

1) 잘 모르겠어요. 시도해 보세요 export DISPLAY=0.

2) 사용 중인 머신에 GUI를 표시하려면 옵션을 사용하여 SSH를 실행하세요 -Y.

관련 정보