서버에서 X11 프로그램을 실행하고 클라이언트에 창을 표시하고 싶습니다.
시작할 서버에 쉘이 있습니다. (이것은 SSH 쉘이 아니라 일부 클러스터 컴퓨팅 소프트웨어입니다.) 프로그램은 어떻게든 이 쉘에서 실행되어야 합니다.
SSH로 클라이언트에 직접 액세스할 수 있지만 클라이언트에서 서버로 SSH로 연결할 수는 없습니다.
서버에서 프로그램을 실행하고 클라이언트에서 창을 열고 싶습니다. 어떻게 해야 합니까?
답변1
역터널링
A에서 B로 SSH를 보낼 수 있지만 B에서 A로 SSH를 원하십니까? 일반적인 해결책은역방향 SSH 터널 만들기. 서버에서:
ssh -f -N -R 4222:localhost:22 CLIENT
이제 CLIENT에서 포트 4222로 SSH를 통해 서버에 로그인할 수 있습니다. 연결에서 X11 전달을 활성화합니다.
ssh -p 4222 -X localhost
수동 설정 방법
또는 원하는 디스플레이로 X11 전달을 수동으로 설정할 수 있습니다. :20
클라이언트의 디스플레이를 :0
서버의 디스플레이 로 전달 하려는 경우 :
ssh -L 6020:localhost:6000 CLIENT
응용 프로그램이 올바르게 표시되면 X를 통해서만 표시할 수 있습니다.승인하다. 이는 "쿠키"(비밀번호로 사용되는 무작위로 생성된 값)의 형태를 취합니다. 쿠키 값을 검색하고 명령을 실행해야 합니다 xauth add :20 MIT-MAGIC-COOKIE-1 …
. 보다원격 X 모니터에서 창 열기("모니터를 열 수 없습니다" 이유)?. 귀하의 경우 xauth list
X 세션에서 명령을 실행하여 SERVER에서 쿠키 값을 얻을 수 있습니다.
export DISPLAY=:20
TCP 전달을 설정하고 쿠키 값을 설정한 후 애플리케이션을 설정 하고 실행합니다.
답변2
서버에 ssh가 있다고 가정하면(즉, 서버에서 ssh를 통해 나갈 수 있지만 연결할 수는 없음) 서버에서 클라이언트로 포트 포워딩을 할 수 있습니다.
SERVER$ ssh -L6000:127.0.0.1:6000 CLIENT.ip.or.name
6000
그러면 SSH 터널을 통해 서버의 로컬 포트가 localhost 포트로 전달됩니다 6000
.