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

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

로컬 머신(A)과 Raspberry PI 3(B)이 있습니다.
B HDMI 모니터가 연결되어 있고 Raspbian 운영 체제를 실행 중입니다.

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를 사용하여 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 서버가 입력 장치(키보드, 마우스)만 사용한다는 것입니다. 비. 따라서 애플리케이션을 사용하려면 원하지 않는 입력 장치를 사용해야 합니다.

원칙적으로 A의 입력 장치를 공유하려고 시도할 수 있지만 구조가 복잡해지기 시작합니다.

그래서가상 네트워크 컨트롤러많은이 경우에는 더 쉽습니다.

vnc4serverA를 A 로 설정합니다 . 이 서버는 A의 응용 프로그램에 대한 X 서버 역할도 합니다. xvnc4viewerA에서 시작하고 이를 사용하여 애플리케이션을 시작하고 제어합니다. B에서 다른 vncviewer를 시작하고 A의 서버에 연결하면 애플리케이션이 표시됩니다. 간단할 수도 있고 directvnc(RaspPi의 프레임 버퍼를 직접 사용하고, X를 둘러볼 필요가 없으므로 RaspPi에 대한 작업이 줄어듭니다), B에서 기존 X 서버를 계속 실행하려는 경우 다른 서버를 사용할 수도 있습니다 xvnc4viewer.


가장 쉬운 방법은 원격 데스크톱을 사용하는 것입니다.가상 네트워크 컨트롤러, 이미 배포판에 패키지로 포함되어 있을 가능성이 높습니다. 이것은 일반적으로 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.

다음으로, 보안에 별로 관심이 없다면 xhost +(B)에서 어떤 형태의 명령을 실행하고 싶을 수도 있습니다. 예를 들어 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 버전에 따라 다시 시작하세요.

마지막으로 - (B) Xorg가 6000을 수신하고 있는지 확인하십시오.netstat -antp | grep -F 6000

관련 정보