SSH를 통한 Xming으로 X11 포워딩?


11

SSH 액세스 권한이 있으며 Xming 글꼴과 함께 Xming을 설치했습니다. xT를 전달하도록 PuTTY를 구성하고 여기의 지침에 따라 데스크탑을 localhost : 0 에 배치하도록 지시했습니다 .

그러나 로그인 한 후 startx... 아무것도 얻지 못했습니다. 또는 오히려 모든 것이 작동한다고 말하는 많은 메시지를 실행하지만 콘솔 창에 대기 상태 인 것처럼 커서가 나타납니다. 그리고 그게 다야.

내가 무엇을 놓치고 있습니까? 데스크탑을 보려면 무언가를 열어야합니까?

데스크톱을 업무용 PC로 전달하여 점심 식사 시간에 하드웨어를 물리적으로 연결하지 않고도 RasPi를 사용할 수 있습니다. 도와주세요.

편집하다:

Xming 실행 중 발생하는 상황의 스크린 샷 및 SSH를 호출하고 호출합니다 startx.

Xming 응답이있는 SSH

편집 2 :

이 답변startxRasPi X 서버를 시작하기 때문에 필요하지 않으며 Windows에서 Xming 서버를 사용하고 있습니다. 이 경우 Windows에서 Xming의 데스크탑 / GUI에 어떻게 도착합니까? Xming이 실행 중이고 SSH가 활성화되어 있어도 정상적인 콘솔 프롬프트가 표시되지 않습니다. 어쩌면 내가 잘못하고있을 것입니다. 내가 원하는 것은 원격 Windows PC의 창에서 실행되는 완전한 일반 RasPi GUI입니다. VNC를 사용하고 싶지 않습니다. 인터넷을 통해 전달하고 있습니다. 내가 거기 어떻게?


2
또한 라즈베리에서 Windows 컴퓨터로 그래픽 세션을 실행하고 싶었습니다. 그리고 startx가 X 서버를 시작한다는 의미의 메시지를 보았을 때 X 프로그램을 시작해야한다는 것을 알았습니다 ... 그래서 ... x-session-manager! 그렇게하면 원격 컴퓨터에 그래픽 세션이 생깁니다. 고마워, 당신은 내 길을 주었다!

답변:


15

Windows 컴퓨터에서 Xming을 시작한 경우 이미 X 서버가 실행중인 것입니다. 를 사용하여 Raspberry Pi의 X 서버를 시작할 필요는 없습니다 startx. X 응용 프로그램은 Raspberry Pi에서 실행되지만 응용 프로그램은 Windows의 Xming X 서버에 연결됩니다.

링크 한 설명서 에는 Windows에서 X 서버를 시작해야한다고 명시 되어 있으며 Linux에서 X 서버를 시작해야한다는 언급은 없습니다. 설명서의 마지막 문장에서 :

이제 로컬 데스크톱의 호스트에서 X 응용 프로그램을 실행할 수 있습니다

"X 응용 프로그램"은 X 서버 (로 시작해야 함 startx)가 아니라 xclock, xeyes 등과 같은 응용 프로그램을 나타냅니다.

특별한 X 응용 프로그램 중 하나는 lxsession 이며 LXDE의 표준 세션 관리자를 시작합니다 (적어도 내 Raspbian에서는). 콘솔에서이 응용 프로그램을 시작하면 찾고있는 "전체 GUI"가 나타납니다.

lxsession

개인적으로 시작하는 것이 유용하지 않다는 것을 lxsession콘솔에서 X 응용 프로그램을 시작하는 것이 훨씬 쉽습니다.


1
확인. 나는 이것을 이해할 수 있다고 생각합니다. startx는 RasPi x 서버를 시작하기 때문에 불필요하다고 말하고 Windows에서 Xming 서버를 사용하고 있습니다. 이 경우 Windows에서 Xming의 데스크탑 / GUI에 도착하는 방법. Xming이 실행 중이고 SSH가 활성화되어 있어도 정상적인 콘솔 프롬프트가 표시되지 않습니다. 당신은 전체 GUI가 아닌 xming에서만 실제 응용 프로그램을 실행할 것이라고 말하고 있습니다. 어쩌면 내가 잘못하고있을 것입니다. 내가 원하는 것은 원격 Windows PC의 창에서 실행되는 완전한 일반 RasPi GUI입니다. VNC를 사용하고 싶지 않습니다. 인터넷을 통해 전달하고 있습니다.
zenbike

답변을 업데이트했습니다.
asalamon74

예상대로 조금 느리게 응답하면 완벽하게 작동합니다. 도와 주셔서 감사합니다.
zenbike

1
… 그래서 가이드가 한 번에 ssh를 통해 단일 앱을 실행하도록 권장하는 이유는 ...
Alexander-Reinstate Monica

1
@ asalamon74 감사합니다! 와! 이건 그냥 멍청이야 나는 키보드와 마우스를 처리 할 필요가 없습니다. 나는 위의 설정으로 TV 앞에 앉아있었습니다. 지금? 난 그냥 ssh하고 보스처럼 GUI를 실행!
Dheeraj Bhaskar

1

Cygwin / X 사용

Xming에 묶여 있지 않다면 대신 Cygwin / X 를 사용 하여 Windows에서 X 서버를 실행할 수 있습니다.

라즈베리 파이 준비하기

PowerShell을 사용하여 Windows에서 Raspberry Pi 로 일반 SSH 연결 을 설정하십시오 .

PowerShell 및 SSH를 사용하여 Windows에서 Raspberry Pi에 로그인

Raspbian 버스터가 포함 감안할 X11Forwarding yes/etc/ssh/sshd_config, 당신의 라즈베리 파이는 Windows에서 X 서버에 X11 응용 프로그램의 시각적 출력을 전달할 수 있어야합니다.

다음 단계는 해당 X 서버를 설치하는 방법을 보여줍니다.

Windows에 Cygwin / X 설치

Cygwin / X는 Raspberry Pi에서 실행되는 GUI 응용 프로그램을 표시하는 Windows 용 X 서버를 제공합니다.

  1. Cygwin 웹 사이트setup-x86_64.exe 에서 다운로드하여 실행하십시오 .

  2. Cygwin의 "로컬 패키지 디렉토리"의 경우을 사용할 수 있습니다 C:\Users\me\AppData\Roaming\Cygwin.

  3. 패키지 다운로드를 위해 가까운 서버를 선택하십시오.

  4. "보기"를 "전체"로 설정하고을 검색하십시오 xinit.

  5. "신규"열에서 드롭 다운 메뉴를 사용하여 값을 "건너 뛰기"에서 xinit최신 버전 으로 변경하십시오 .

Cygwin과 함께 xinit 패키지 설치

  1. openssh같은 방법으로 패키지를 설치 하십시오.

Windows에서 Raspberry Pi에 연결

  1. Windows의 시작 메뉴를 사용하여 X 서버를 시작하십시오 Cygwin-X → XWin Server. 이 창은 열리지 않지만 시스템 트레이에 두 개의 새로운 아이콘이 표시됩니다.

시스템 트레이의 XWin 서버 아이콘

  1. Cygwin 터미널을 시작하십시오. Cygwin → Cygwin64 Terminal

  2. DISPLAYWindows에서 X 서버가 실행되는 환경 변수를 설정하십시오 .

    export DISPLAY=:0.0

  3. X11 포워딩으로 Raspberry Pi에 연결하십시오 :

    ssh -Y pi@raspberrypi

Cygwin 터미널로 로그인

SSH 세션 내에서 이제 Thonny 와 같은 Raspberry Pi에서 X 응용 프로그램을 시작할 수 있습니다 .

Thonny가 Windows로 전달

또는 질문의 의견에서 언급 한 user1297과 같이 x-session-manager외부 모니터에서 HDMI를 통해 Raspberry Pi에 연결할 때 얻는 경험을 모방 할 수 있습니다 .

Rasbpian 데스크탑이 Windows에 인식됨

쉘에 이름을 먼저 입력하지 않고 응용 프로그램을 직접 시작하려면 다음을 사용하십시오.

ssh -Y pi@raspberrypi x-session-manager

macOS에서

XQuartz 는 macOS 용 X 서버를 제공합니다.

XQuartz를 설치하고 로그 아웃 한 후 다시 로그인하여 새로운 가치를 실현 DISPLAY한 다음 Bash에서 SSH를 사용하여 응용 프로그램을 시작하십시오.

ssh -Y pi@raspberrypi thonny

XQuartz를 사용하는 macOS 내부의 Thonny


1

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 터널의 시작 측에서) 시작되므로 엉망이 될 필요가 없습니다 .

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