서버에서 SSH 없이 역방향 X11 전달

서버에서 SSH 없이 역방향 X11 전달

서버에서 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 listX 세션에서 명령을 실행하여 SERVER에서 쿠키 값을 얻을 수 있습니다.

export DISPLAY=:20TCP 전달을 설정하고 쿠키 값을 설정한 후 애플리케이션을 설정 하고 실행합니다.

답변2

서버에 ssh가 있다고 가정하면(즉, 서버에서 ssh를 통해 나갈 수 있지만 연결할 수는 없음) 서버에서 클라이언트로 포트 포워딩을 할 수 있습니다.

SERVER$ ssh -L6000:127.0.0.1:6000 CLIENT.ip.or.name

6000그러면 SSH 터널을 통해 서버의 로컬 포트가 localhost 포트로 전달됩니다 6000.

관련 정보