SSH : X 디스플레이가 아닌 원격 화면에서 GUI 프로그램 시작


11

문제

대부분의 사람들은 클라이언트의 디스플레이를 사용하여 원격 호스트에서 GUI 프로그램을 실행하기 위해 "-X"옵션을 사용하여 ssh를 통해 서버에 연결하려고합니다. 서버에 연결된 실제 모니터에서 GUI 프로그램을 실행하고 싶습니다. 이게 가능해 ? 좀 더 구체적으로 설명하겠습니다 :

제 상황은 다음과 같습니다. 키보드 나 마우스가없는 워크 스테이션이 있지만 모니터가 연결되어 있습니다. 랩톱으로 SSH로 연결하고 xeyes 또는 ssvnc와 같은 일부 그래픽 프로그램을 시작하여 워크 스테이션의 모니터에 표시하려고합니다.

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

편집 : 추가 정보

몇 가지 사항을 더 명확하게 설명해야합니다.

  • 워크 스테이션에 sudo 액세스 권한이 있으며 필요한 경우 무엇이든 설치할 수 있습니다.
  • 워크 스테이션이 그놈 ​​사용자 인터페이스를 실행 중입니다.
  • 워크 스테이션에서 키보드와 마우스를 분리하기 전에 그놈 세션에 로그인했습니다. 따라서 워크 스테이션 모니터에서 내 그놈 데스크탑을 볼 수 있습니다.
  • 워크 스테이션의 랩톱에서 프로그램을 실행하고 싶지 않습니다. 워크 스테이션에서 워크 스테이션 프로그램을 실행하고 싶습니다. xeye 또는 원격 서버에있는 실행 파일은 원격 서버의 모니터에서 실행되어야합니다.
  • 이 작업을 수행하면 커서가 인터페이스에 연결되지 않는 상황이 발생합니다. 물건을 클릭 할 수 없습니다. 괜찮아.

어떤 도움이라도 대단히 감사합니다!


xhost +서버에서 실행 했습니까 ?
karlphillip

예를 들어 Synergy를 실행하는 3 개의 우분투 PC가 3 사이에서 동일한 키보드와 마우스를 사용하는 경우와 같이 흥미로운 질문이라고 생각합니다. 로그인 할 때 3 번 로그인해야합니다. 주 PC에 로그인 할 때 다른 두 PC에 로그인하는 스크립트를 작성하는 것이 좋습니다.
Sverre

답변:


5

모든 xlib 응용 프로그램은 xserver에 연결해야합니다. 다음 중 하나를 수행하여 앱에 서버 연결을 알려 주어야합니다.

  • 환경 변수 DISPLAY 설정
  • 다음과 같은 명령 행 플래그 사용 -display

첫 xserver는 일반적으로 연결 문자열 ': 0'에 의해 도달 할 수 있습니다. 그래서 이것을 시도하십시오 :

xeyes -display :0

아니면 이거

env DISPLAY=:0 xeyes

XAUTHORITYX11 서버가 임시 Xauthority 파일을 사용하기 때문에 많은 경우 (예 : 그놈의 GDM에 의해 시작될 때)에도 설정 이 필요합니다.
user1686

흥미롭게도 $ DISPLAY 변수를 설정 한 후 xeye를 시작할 때 "오류 : 디스플레이를 열 수 없음"메시지와 함께 "프로토콜을 지정하지 않았습니다"메시지가 나타납니다.
xApple

@grawity 조언을 주셔서 감사합니다. 명령이 작동하도록 XAUTHORITY를 어떻게 설정해야합니까?
xApple

5

이 워크 스테이션이 X Windows 서버를 실행 중입니까? 그것없이, 이것은 모든 바보입니다.

데이터를 그래픽, 픽셀, 색상 및 위치로 처리하려면 SOMETHING이 필요합니다. '모니터'는 어떤 종류의 소프트웨어가 없어도 쓸모가 없습니다.

그렇다고 가정합니다. (그러나 텍스트에서, 그렇지 않으면 소리가납니다)

'workstation'및 'laptop'의 호스트 이름 (및 / etc / hosts 또는 DNS 등을 통한 적절한 DNS 확인)이 주어지면 컴퓨터 호스트 이름을 적절한 IP 주소로 바꾸십시오.

ssh workstation
xhost +laptop

그런 다음이 시점에서 워크 스테이션에서 로그 아웃 할 수 있습니다. 워크 스테이션의 Xserver에 대한 권한을 설정하여 '노트북'을 연결할 수 있습니다.

DISPLAY env var 세트를 적절히 사용하여 프로그램을 시작하면 랩톱에서 실행되는 동안 응용 프로그램이 워크 스테이션에 표시 될 수 있습니다.

DISPLAY=workstation:0 xeyes

-또는-

export DISPLAY=workstation:0
xeyes

두 방법 모두 작동하며, 후자는 해당 쉘에서 시작할 때 워크 스테이션에 X11과 관련된 모든 것을 표시합니다. (말이 되길 바래)

'xhost'줄은 랩톱이 워크 스테이션의 Xserver에 연결하도록 허용하는 것입니다. 권한이 없으면 권한이없는 X 서버를 시작하지 않으면 권한이 거부됩니다. 실제로 권장하지는 않습니다. 데이터가 랩톱과 워크 스테이션간에 '일반 텍스트'로 전송되어 스니핑 될 수 있기 때문에 'xhost'보호는 여전히 절실합니다. 그러나 쉬운 솔루션입니다.

프라이버시를 원한다면 랩톱과 워크 스테이션 사이에 일종의 암호화 된 터널을 설정해야합니다 (표시 : 포트 6000). 네,이 시점에서 이상합니다.

통제 된 환경에 있다면 'xhost + laptop'명령을 사용하면 충분합니다 .'xhost + '명령의'노트북 '부분을 떠나면 누구나 Xserver에 연결하여 표시 할 수 있습니다.

마우스가 워크 스테이션 Xserver에 '연결되지'않았으므로 창을 조작하거나 항목을 클릭 할 수 없습니다.

마우스를 연결하려면 x2x, synergy, vnc 또는 X Windows 기반 화면 공유 응용 프로그램과 같은 것이 좋습니다.


답변 주셔서 감사합니다! 당신은 옳습니다. 아마도 몇 가지를 더 지정해야 할 수도 있습니다. (1) 워크 스테이션이 그놈 ​​사용자 인터페이스를 실행하고 있습니다. (2) 랩탑에서 프로그램을 실행하고 싶지 않습니다. Xeyes 또는 워크 스테이션 모니터를 사용하여 워크 스테이션에서 실행해야 할 항목 (3) 좋습니다. 커서가 연결되지 않을 것입니다.
xApple

그런 다음 실제로 워크 스테이션으로 ssh하고 DISPLAY 변수를 'localhost : 0'(또는 ': 0')으로 설정하고 앱을 시작하면됩니다. 여전히 권한 (xhost + localhost가 가장 적합 할 것임)과 nohup 또는 &를 처리해야합니다. (background and disown) 또는 쉘의 bg / disown 명령으로 로그 아웃 할 때 앱이 종료되지 않습니다. (물론 원하는 것이 아니라면)
lornix

아, 어쩌면 내 문제는 권한 문제 일뿐입니다. 루트로 "xeyes"를 실행하면 오류 메시지가 동일합니다. 권한 문제를 해결하는 답변을 게시하면 해결 된 것으로 표시 할 수 있습니다.
xApple

워크 스테이션에서 X Windows 세션에 로그인 한 사람이 있습니까? 그렇지 않으면 프로그램 연결을 수신하는 코드가 아직 활성화되지 않고 로그인 일뿐입니다. (매우 단순화하고 있습니다!) 워크 스테이션에 ssh'ing 한 다음 'startx'를 시도하면 디스플레이에 연결할 수 있습니다. 또 다른 방법은 베어 본 X 서버를 사용하여 'X : 0 &'를 입력하고 DISPLAY 변수를 설정 한 다음 'xhost + laptop'(또는 'xhost +')을 수행하는 것입니다. 그러나 그것은 대부분 조금 저수준을 얻고 있습니다. (테스트에 훌륭합니다!)
lornix

예, 키보드와 마우스를 분리하기 전에 워크 스테이션에서 그놈 세션에 로그인했습니다. 내 ssh 세션에서 "startx"명령을 실행하려고 시도한 적은 적습니다. 오류 메시지는 다음과 같습니다. "X : X 서버를 실행할 권한이없는 사용자가 중단되었습니다."
xApple
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.