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


10

머신 A에서 머신 B로 SSH를 통해 로그인하고 머신 A에 X 세션이 있고 B에서 X 프로그램을 실행하려고하는 상황을 고려하십시오.

ssh -X B이 작업을 투명하게 만듭니다. 그러나 서버 구성이 부족 X11Forwarding yes하고 서버에 대한 루트 권한이없고 서버 관리자가 무관심하다면 어떻게해야합니까?

SSH 채널을 통해 원하는 것을 전송할 수 있기 때문에 X11 연결을 전달할 수 있습니다. 실제로 로컬 X 서버가 TCP 연결을 허용 ssh -R 6010:localhost:6000하는 경우 표시 번호에 따라 쉽게 조정할 수 있습니다. 로컬 X 서버가 소켓 연결 만 허용하는 일반적인 경우는 어떻습니까? 최소 설치 요구 사항 (특히 B)으로 X 전달을 편리하고 안전하게 수행하려면 어떻게해야합니까?

답변:


2

@ 데미의 대답은 좋지만 작성하는 것이 큰 도움이 될 것이라고 생각합니다.

  • local-Xserver를 제공하는 로컬 시스템.
  • remote-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를 실행했습니다.


6

소켓과 통신 할 때 TCP 포트와 통신 할 때 프로토콜 X11이 말하는가?

ssh -R 6010:localhost:6000X11 데이터를 포트 오버 포워딩으로 가져 오기 위해 제안 된 용도를 결합 한 다음 tcp 포트와 X11 소켓 리스너 사이의 로컬 gab를 nc와 브리지로 연결할 수 있습니다.

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

그렇습니다. 그러나 나는 " .ssh/config클라이언트 측과 .profile서버 측에 넣은 다음 실행 하십시오"라는 대답을 원했습니다 ssh B.
Gilles 'SO- 악마 그만해'

1
쉬운 "설정에 넣습니다"라는 대답이 있습니다. 문제는 필요한 옵션이 B의 sshd_config쪽에 있기 때문에 질문 자격에서 제외한다는 것입니다. 실수로 보안 문제를 해결하기 어려운 장소.
Caleb

3
관리자가 신경 쓰지 않고 기본 설정을 그대로 두는 (내 경험상 매우 일반적인) 사례를 타겟팅하고 있습니다. X11 포워딩은 정책에 의해 금지되지 않으며 sysadmin 무관심에 의한 불편 함입니다. 어쨌든 X11 포워딩은 서버가 클라이언트를 공격하도록 허용하므로 서버 측을 금지하는 것은 의미가 없습니다.
Gilles 'SO- 악마 중지'

@Gilles 나는 기본값이 실제로 유용한 것을 막지 못한다는 데 동의합니다. 그렇다면 기본 설정을 업스트림으로 변경하기 위해 로비해야합니까?
Caleb

나를 위해, /tmp/.X11-unix/X0FIFO가 아닌 유닉스 도메인 소켓이므로 리디렉션 시도는로 끝납니다 ENXIO: No such device.
Samveen

2
  1. Xephyr을 사용하여 추가 X 서버를 가동시킵니다. 이것은 보안을위한 것으로, 원격 시스템이 사용자의 시스템을 손상시키지 못하게합니다.

  2. SSH를 사용하여 원격 소켓을 Xephyr 소켓으로 전달하십시오. SSH는 유닉스 소켓 포워딩도 지원합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.