라즈베리 파이 3 *역방향* 원격 데스크톱

라즈베리 파이 3 *역방향* 원격 데스크톱

로컬 머신(A)과 Raspberry PI 3(B)이 있습니다.
B는 HDMI 모니터가 연결되어 있고 Raspbian OS를 실행하고 있습니다.

A에서 X 응용 프로그램을 실행하고 싶습니다. 예를 들어 A에 있는 Libre Office Impress 프레젠테이션을 B에 연결된 화면에 표시(표시)하고 싶습니다.
A 컴퓨터 앞에서 해당 작업을 수행하고 싶습니다.

  • ssh -X to_AB가 아닌 ,
  • A에서 출력을 얻기 위해 B에서 VNC를 사용하지도 않습니다.

나는 다음을 찾고 있지 않습니다:

  • A에서 ssh를 사용하여 B에서 X 앱을 실행하고 해당 출력을 A에 표시합니다(이 작업은 from_a $ ssh -X machine_Brdp/remmina/vnc 클라이언트에 의해 수행될 수 있음)
  • A에서 ssh를 사용하여 B에서 X 앱을 실행하고 해당 출력을 B에 표시합니다(예를 들어 ssh에서 디스플레이를 내보내고 xhost를 적절하게 구성하여 수행할 수 있음 from_a $ ssh machine_b from -> at_a_but_sshed_onto_b $ xhost + && export DISPLAY=:0 xeyes).
  • B에 대한 직접적인 물리적 액세스가 필요한 솔루션

내가 시도한 것은 원격 X 항목을 실행하기 위한 설정(B)이었습니다...아무 것도 잊지 않은 경우 - nmap -p6000 machine_B반환된 이후 해당 포트는닫은, 실행 중(A의 명령줄에서):

A_machine $ env DISPLAY=B_machine:0 xeyes

B_machine이 설정되어 있고 /etc/hosts실패 ~/.ssh/config합니다.

내가 의심하는 것은 X11 복사 단계를 완전히 놓쳤다는 것입니다.매직_쿠키.Xauthority에서...하지만 이 단계가 필요하지 않고 더 간단한 방법이 있을까요?

편집: @Rostislav Kandilarov 질문에 대한 응답으로 lightdm이 X 서버를 시작하는 것처럼 보이지만 곧 월요일인지 확인하고 --nolisten tcp.

답변1

(아래 편집된 이전 답변)

B를 건드리지 않고 A에서 이 모든 작업을 수행해야 한다는 추가 요구 사항이 있는 경우 B에서 X 서버를 실행하고 A의 응용 프로그램과 연결하는 데 따른 문제는 이 X 서버가 입력 장치(키보드, 마우스)만 사용한다는 것입니다. )이 B에 연결되어 있습니다. 따라서 애플리케이션을 사용하려면 원하지 않는 이러한 입력 장치를 사용해야 합니다.

원칙적으로 A의 입력 장치를 공유하려고 시도할 수 있지만 그러면 구성이 실제로 비잔틴화되기 시작합니다.

그래서VNC~이다많이이 상황에서는 더 쉽습니다.

A에 a를 설정합니다 vnc4server. 이 서버는 A에 있는 응용 프로그램에 대한 X 서버 역할도 합니다. xvnc4viewerA에서 a를 시작하고 이를 사용하여 응용 프로그램을 시작하고 제어합니다. B에서 다른 vncviewer를 시작하고 A의 서버에 연결하면 애플리케이션이 표시됩니다. RaspPi의 프레임 버퍼를 직접 사용하고 X를 통한 추가 우회가 없으므로 RaspPi의 작업 부하가 줄어드는 것처럼 간단할 수도 있고 directvncB에서 기존 X 서버를 계속 실행하려는 경우 다른 방법도 있습니다 xvnc4viewer.


가장 쉬운 방법은 다음과 같은 원격 데스크톱을 사용하는 것입니다.VNC, 이미 배포판에 패키지로 제공되었을 가능성이 높습니다. 이는 일반적으로 ssh 등을 통한 X 전달보다 훨씬 더 잘 작동합니다. 왜냐하면 훨씬 더 잘 압축되고 유선에서 X 프리미티브를 사용하지 않기 때문입니다.

물론 SSH를 통해 또는 직접 X 전달을 설정하는 방법도 여러 가지가 있습니다. 예를 들어 B에서 A로 로그인하여 ssh -XA에서 애플리케이션을 실행하고 B에 출력을 표시할 수 있습니다. (역방향을 배제했지만 이에 대해서는 아무 말도 하지 않았으므로 저는 잘 모르겠습니다. 당신이 원한다면 확실히).

다음을 통해 원격 세션용 X 서버를 구성할 수도 있습니다.XDMCP. xauth또는 적절한 설정을 사용하여 단일 응용 프로그램이 원격 X 서버를 사용하도록 만듭니다 DISPLAY.

하지만 여전히 VNC를 먼저 사용해 보는 것이 좋습니다.

답변2

따라서 (B)에서 Raspbian OS를 사용하는 경우 특정 사용자 정의를 수행하지 않았다면 아마도 lightdm을 사용하고 있을 것입니다.

확실히 X 서버가 tcp(포트 6000)를 수신하도록 lightdm에 지시해야 합니다. xserver-allow-tcp=true전역 섹션의 conf 파일에 설정하여 수행합니다 [Seat:*]. 명시적으로 지정해야 할 수도 있습니다 xserver-command=X -listen tcp.여기). 에서 추가 파일을 선택하거나 /etc/lightdm/lightdm.conf.d/*.conf직접 선택할 수 있습니다 /etc/lightdm/lightdm.conf.

다음으로, 보안에 크게 신경 쓰지 않는다면 아마도 (B) xhost +와 같은 어떤 형태의 명령을 실행해야 할 것입니다 xhost + IP_OF_(A). LAN 취약점에 관심이 있는 경우당신은해야하지처음에는 tcp를 통해 X를 직접 사용하지만 ssh가 없으면 (B)에서 실행하여 (A)와 (B) 사이에 MIT-MAGIC-COOKIE를 교환하는 약간의 해킹 경도를 제공할 수 있습니다 xauth extract - $DISPLAY | ssh (A) xauth merge -.

그런 다음 lightdm을 다시 시작 service lightdm restart하거나 systemctl restart lightdm.serviceOS 버전에 따라 다시 시작하세요.

마지막 - Xorg가 6000을 수신하고 있는지 확인합니다(B).netstat -antp | grep -F 6000

관련 정보