Windows에서 X 서버를 이미 실행하고 있다면 (Xming과 마찬가지로) Windows 측이 대부분 완료된 것입니다 (그러나 몇 가지 중요한 세부 사항은 아래 참조). 남은 핵심 비트는 pi의 X11 앱에 X11 데이터를 Windows PC로 보내도록 지시하는 것입니다.
이것은 DISPLAY
환경 변수 를 통해 수행됩니다 . 일반적으로 X 서버와 앱이 동일한 컴퓨터에서 실행중인 경우 DISPLAY는 서버 번호 (예 : :0
하나의 X 서버 만 실행중인 경우) 또는 서버 및 화면 (예 :) 만 지정합니다 :0.0
. IP 주소가 없기 때문에 앱의 X 라이브러리에 서버가 로컬이며 연결이 적절하게 이루어짐을 알려줍니다 (아마도 일종의 공유 메모리 전송을 통해).
앱이 X11 데이터를 원격 노드로 보내도록하려면 DISPLAY
변수에 IP 주소를 포함 시키십시오 . 예를 들면 다음과 같습니다 export DISPLAY=192.168.1.10:0
. 그러면 X11 앱에 노드 192.168.1.10의 X 서버 # 0에 대한 TCP 연결을 열어야한다는 메시지가 표시됩니다. 네트워크에 DNS 호스트 이름이 있으면 여기에 좋습니다.
두 가지 잠재적 인 문제
첫 번째 단락에서 썼 듯이 Xming을 실행하는 것만으로는 충분하지 않을 수 있습니다. 추가 구성이 필요할 수 있습니다.
첫 번째는 X11 서버가 TCP를 통한 원격 노드의 연결을 허용하도록 구성되어야한다는 것입니다. 오늘 배포 된 많은 X 서버 (Xming에 대해서는 잘 모르겠습니다)는 명시 적으로 달리 구성하지 않는 한 로컬에서 실행되는 앱의 연결 만 허용합니다. 이것은 모든 개방형 소켓이 공격의 잠재적 인 벡터이기 때문에 보안 기능입니다.
두 번째는 X11 서버가 연결할 수있는 호스트 / 사용자 데이터베이스를 유지 관리한다는 것입니다. Raspberry Pi의 IP 주소를 허용해야합니다. xhost
예를 들어, xterm에서 실행되는 콘솔에서 Windows의 Xming에서 명령을 실행하여이를 수행 할 수 있습니다 . xhost +
이 보안 검사를 비활성화하도록 입력 할 수도 있지만 전 세계 어디서나 모든 앱이 디스플레이에 대한 연결을 열 수 있기 때문에 위험합니다. 모든 사람 (예 : 자신의 집)을 신뢰하는 LAN의 방화벽 뒤에있는 경우 가장 쉬운 방법이지만 xhost
그렇지 않은 경우 올바르게 구성 하는 데 시간이 걸립니다 .
대안 : ssh -Y
위의 접근 방식을 사용하면 X11 앱은 모두 X 서버에 대한 TCP 연결을 열려고 시도합니다. 이 연결은 안전하지 않습니다. LAN 스누핑 패킷의 누군가가 가로 챌 수 있습니다.
이 문제를 해결하려면 Raspberry pi에서 DISPLAY 변수를 설정하는 대신 -Y
연결시 매개 변수를 사용하십시오 (예 :) slogin -Y hostname
. -Y 매개 변수 (-X와 같은)는 X11 트래픽을 전달하기 위해 노드 사이에 터널을 작성합니다. 그러면 X11 트래픽이 암호화되고 안전하게 유지됩니다. 또한 앱이 터널을 사용할 수 있도록 자체 DISPLAY 환경 변수를 할당합니다. 또한 xhost
(X 서버에 관한 한) 연결이 로컬로 (SSH 터널의 시작 측에서) 시작되므로 엉망이 될 필요가 없습니다 .