서버 구성에서 허용하지 않는 경우 SSH를 통해 X11을 전달하세요.

서버 구성에서 허용하지 않는 경우 SSH를 통해 X11을 전달하세요.

상황을 생각해 보십시오. SSH를 통해 시스템 A에서 시스템 B로 로그인하고 시스템 A에 X 세션이 있으며 B에서 X 프로그램을 실행하고 싶습니다.

ssh -X B이 작업을 투명하게 만드십시오.그런데 X11Forwarding yes서버 구성이 누락되어 있고, 서버에 대한 루트 권한도 없고, 서버 관리자가 무관심하다면 어떻게 될까요?

SSH 터널을 통해 원하는 것은 무엇이든 파이프할 수 있으므로 X11 연결을 전달하는 것이 분명히 가능합니다. 실제로 로컬 X 서버가 TCP 연결을 허용한다면 매우 간단합니다 ssh -R 6010:localhost:6000(디스플레이 수에 따라 조정됨). 로컬 X 서버가 소켓 연결만 허용하는 일반적인 경우는 어떻습니까? 최소한의 설치 요구 사항(특히 B)으로 X를 쉽고 안전하게 전달하는 방법은 무엇입니까?

답변1

X11이 소켓과 통신할 때와 TCP 포트로 통신할 때 사용하는 프로토콜이 다른가요?

ssh -R 6010:localhost:6000어쩌면 포트 전달을 통해 X11 데이터를 가져온 다음 nc를 사용하여 다음과 같이 tcp 포트와 X11 소켓 수신기 사이의 로컬 gab을 연결하는 제안된 사용 방법을 통합할 수 있습니다 .

nc -l -p 6000 > /tmp/.X11-unix/X0

답변2

@Demi의 답변은 훌륭하지만 작성하는 것이 많은 도움이 될 것이라고 생각합니다.

  • local - Xserver를 서비스하는 로컬 시스템입니다.
  • 원격 – Xserver에 데이터를 보내는 응용 프로그램을 제공하는 원격 컴퓨터

한적한 /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

리모컨이 ~/.Xauthority비어 있거나 존재하지 않습니다.

장소 상에서:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

테스트에서 Ubuntu 18.05는 로컬로 실행되고 Debian Jesse는 원격으로 실행되었습니다.

답변3

  1. Xepyr를 사용하여 추가 X 서버를 시작하세요. 이는 보안을 위한 것입니다. 원격 시스템이 시스템을 손상시키는 것을 방지합니다.

  2. SSH를 사용하여 원격 소켓을 Xepyr 소켓으로 전달합니다. SSH는 Unix 소켓 전달도 지원합니다.

  3. 원격 서버의 환경 변수를 올바르게 설정하십시오.

관련 정보