SSH X11 포워딩 및 포트 포워딩에 대해 질문이 있습니다.
나는 가지고있다:
- Ubuntu Desktop을 실행하는 두 대의 컴퓨터(동일한 위치 및 로컬 네트워크에 있지 않음)는
Desktop1
IP 주소를 사용하여 전화를 걸고IP1
, 다른 컴퓨터는 입니다Desktop2
.IP2
- IP 주소가 있는 VPS(Ubuntu 서버) 1개
IP_VPS
.
D1 <------> VPS <------> D2
에서 Desktop1
다음 명령을 실행했습니다.
ssh -XC -R 8022:localhost:22 vps_user@IP_VPS
그런 다음 다음 명령을 실행합니다 Desktop2
.
ssh -XC vps_user@IP_VPS
연결된 SSH 셸에서 다음을 실행했습니다.
ssh -XC desktop_user@localhost -p 8022
(목적은 를 통해 에 연결하는 Desktop1
것 Desktop2
입니다 VPS
)
성공적으로 연결되었습니다 Desktop1
. 그러나 연결된 SSH 셸(예: )에서 GUI 응용 프로그램을 실행하려고 하면 gedit
창이 에 나타나지 않고 Desktop2
에 나타납니다 Desktop1
. 으로 전달될 것으로 예상했습니다 Desktop2
.
제가 뭔가 잘못 이해한 것이 있으면 설명해주세요. 감사합니다!
답변1
Ubuntu는 X11 대신 Wayland를 사용할 수 있으며 이로 인해 X11 전달을 사용할 수 없게 됩니다.
Desktop1의 명령 목적은 ssh
향후 인바운드 연결을 허용하기 위해 원격-로컬 포트 전달을 설정하는 것이므로 해당 연결에는 X11 전달 옵션이 전혀 필요하지 않습니다. 하지만 해를 끼치면 안 됩니다.
그렇지 않으면 명령이 기본적으로 올바른 것처럼 보입니다. X11 응용 프로그램은 Desktop2에 창을 표시하거나 $DISPLAY
정의되지 않은 오류를 보고해야 합니다.
유일한 방법은X11DISPLAY=:0
VPS->Desktop1에서 시작된 GUI 응용 프로그램은 X11 응용 프로그램을 시작하기 전에 Desktop1에 명시적으로 설정된 경우 Desktop1 자체에 나타납니다. ( desktop_user@Desktop1
첫 번째 SSH 연결을 위해 로컬 GUI 세션이 열렸을 수 있으므로 Desktop_user에는 로컬 X11 디스플레이에 대한 유효한 세션 쿠키가 제공되었습니다.)
하지만 그건 단지 사실일 뿐이야Desktop1이 실제로 X11을 사용하도록 구성된 경우. 우분투용 그놈 데스크탑Wayland를 사용 중일 수 있음, 이는 X11 프로토콜을 완전히 차단합니다. gedit
X11 대신 Wayland 프로토콜이 사용되는 경우 이 DISPLAY
변수는 의미가 없으며 대신 Desktop1의 로컬 모니터에 표시됩니다.
Wayland에서는 클라이언트, 디스플레이 합성기(가장 가까운 X11 서버) 및 커널/디스플레이 하드웨어 간의 공유 메모리 버퍼가 선택 사항이 아니므로 Wayland 프로토콜은 X11과 같은 원격 응용 프로그램을 허용하지 않는다는 것을 알고 있습니다. VNC 또는 RDP와 같은 GUI 원격 솔루션은 Wayland에서 별도로 구현할 수 있습니다.
예를 들어, 실제 X11 전용 애플리케이션으로 테스트할 수 있을까요 xterm
? 또는 #WaylandEnable=false
에서 주석 처리된 행을 찾아서 /etc/gdm3/custom.conf
주석 처리를 해제하고 Desktop1을 다시 시작하여 Desktop1의 GUI를 X11 전용 모드로 구성합니다 .
(Ubuntu에서 Wayland를 비활성화하는 방법에 대한 자세한 내용:https://linuxconfig.org/how-to-enable-disable-wayland-on-ubuntu-22-04-desktop)