상황을 생각해 보십시오. 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
Xepyr를 사용하여 추가 X 서버를 시작하세요. 이는 보안을 위한 것입니다. 원격 시스템이 시스템을 손상시키는 것을 방지합니다.
SSH를 사용하여 원격 소켓을 Xepyr 소켓으로 전달합니다. SSH는 Unix 소켓 전달도 지원합니다.
원격 서버의 환경 변수를 올바르게 설정하십시오.