SSH를 통해 원격 X 세션을 시작하려면 XDMCP가 필요한 이유는 무엇입니까?

SSH를 통해 원격 X 세션을 시작하려면 XDMCP가 필요한 이유는 무엇입니까?

내 노트북(둘 다 Trisquel 실행)에서 Wi-Fi를 통해 내 데스크톱 컴퓨터에 액세스하기 위해 원격 데스크톱 연결을 설정하려고 합니다. VNC를 사용해 보았지만 너무 느려서 다른 옵션을 찾고 있습니다. 이상적으로 내가 하고 싶은 일은 X 전달을 사용하여 내 노트북의 별도 tty(예: tty8)에서 실행되는 SSH를 통해 원격 X 세션을 시작하는 것입니다. 이것이 가능할 것 같지만 어떻게 작동하는지 이해하려고 노력하고 있습니다.

SSH 터널을 통한 X 전달은 단일 X 응용 프로그램에서 제대로 작동하는 것 같습니다 ssh -X.

startx lxsession -- :1 tty8

그럼 2개와 2개를 합치면 SSH를 사용하여 원격 컴퓨터에 로그인한 후 다음 명령을 입력하면 SSH 연결을 통해 원격 세션을 시작할 수 있어야겠죠?

startx gnome-session -- :1 tty8

하지만 아니요, 이건 작동하지 않습니다! 다음 오류가 발생합니다.

X: user not authorized to run the X server, aborting.

내가 읽은 바에 따르면 이 작업을 수행하려면 XDMCP 및/또는 X 중첩을 사용해야 하는 것 같습니다.

그래서 내 질문은: 이 작업을 수행하기 위해 왜 이러한 추가 패키지를 사용해야 합니까? 나는 X가 네트워크 투명성을 가져야 한다고 생각합니다. 이 경우 내가 사용하려는 tty가 로컬 또는 원격 컴퓨터에 있는지 왜 알거나 신경 쓰겠습니까? XDMCP/X 중첩은 X에 기본적으로 포함되지 않는 무엇을 가져오나요?

나는 이것을 이해하고 더 잘 이해하려고 노력하고 있습니다.

답변1

startx gnome-session -- :1 tty8

세션에서 이 명령을 실행 하면 원격으로 직접 작동 ssh -X할 수 없습니다 . gnome-session대신, 실제로 tty8해당 시스템에 앉아 있는 모든 사람을 위해 원격 호스트의 가상 콘솔에서 원격으로 그놈 세션을 시작하려고 합니다.

대신, 비밀번호나 SSH 키 비밀번호를 입력하라는 메시지가 표시되지 않고 계정을 사용하여 원격 호스트에서 명령을 실행할 수 있도록 먼저 SSH 키를 설정해야 합니다. 그러면 다음과 같이 실행할 것입니다.당신의 지역에서체계:

startx ssh -X <remote host> gnome-session -- :1 tty8

&명령이 백그라운드에서 실행되도록 하려면 끝에 추가해야 할 수도 있습니다 .

기본적으로 다음을 원할 것입니다.

1) tty8의 X 서버, 세션 프로세스로 실행 중...

2) ...SSH 연결 X를 원격 호스트로 전달합니다. 여기서...

3) ... gnome-sessionSSH 연결을 통해 디스플레이를 시작하고 로컬 tty8의 "빈" X 서버로 다시 전송합니다.

GNOME이 GPU의 고급 3D 가속 기능을 사용하여 데스크탑을 렌더링하는 경우 로컬에서 실행할 때 직접 렌더링(= GNOME 창 관리자와 X 서버 간의 직접 메모리 액세스)을 사용합니다. 이와 같은 원격 세션을 실행하면 직접 렌더링이 불가능하므로(GPU가 창 관리자 프로세스와 동일한 시스템에 있지 않기 때문입니다!) 이로 인해 속도가 느려질 수 있습니다. 이 경우 더 간단한 창 관리자를 선택해야 할 수도 있습니다.

XDMCP는 제어 프로토콜입니다.X11 터미널:다른 컴퓨터에서 X11 모니터 + 마우스 + 키보드 역할만 하는 간단한 컴퓨터 장치입니다. XDMCP 프로토콜은 SSH 이전에 개발되었으며 완전히 안전하지 않습니다. XDMCP는 안전하지 않기 때문에 최신 시스템에서 기본적으로 비활성화되어 있으므로 XDMCP를 지원하도록 디스플레이 관리자( 또는 기타 )를 gdm구체적 으로 kdm구성 하지 않는 한 귀하의 경우에는 작동하지 않습니다 . 이렇게 하면 로컬 X 서버가 X11 터미널인 것처럼 가장하고 원격 호스트에 직접, 암호화되지 않은 비 SSH 전달 연결을 만들 수 있습니다. (거부하세요.")xdm*dmstartx

반면에 X 중첩을 사용하면 tty7:0.0(또는)의 일반 로컬 X11 세션 내에 큰 창을 가질 수 있으며, 여기에는 원격 데스크톱 세션이 포함됩니다.

답변2

나는 이것을 위해 Xnest를 사용합니다https://www.x.org/archive/X11R7.5/doc/man/man1/Xnest.1.html

설치 후(Debian/ubuntu/mint/etc의 apt) 터미널을 열고 다음을 수행합니다.

user@localhost:~$ Xnest :1 &
user@localhost:~$ export DISPLAY=:1
user@localhost:~$ ssh -Y user@remotehost
(login, etc)
user@remotehost:~$ mate-session

또는 VT(ctrl+alt+F1 등)를 열고 를 사용하여 새 X 서버를 시작한 X :1다음 동일한 작업을 수행 export DISPLAY=:1하고 SSH로 연결할 수 있습니다. 개인적으로 저는 Xnest를 선호합니다.

관련 정보