~에서https://unix.stackexchange.com/a/17278/674
을 실행하면 (
ssh -X localhost
아마도$DISPLAY
)localhost:10.0
. 비교됨:0.0
,SSH로 연결하지 않았을 때의 값입니다. (이.0
부분은 생략가능합니다. 화면번호이지만,여러 화면거의 사용하지 않습니다. ) 두 가지 형태의 X 디스플레이가 나타날 수 있습니다.
- 이전 콘텐츠 없이 로컬로 표시됩니다
:
.- TCP 디스플레이,
:
.를 통해
ssh -X localhost
액세스할 수 있습니다.X 서버통과하다모니터 2개하지만 애플리케이션은:NUMBER
로컬 소켓과 공유 메모리를 통해 서버에 액세스하는 방법과HOSTNAME:NUMBER
속도가 느리고 일부 확장 기능이 비활성화된 TCP를 통해 서버에 액세스하는 방법 등 다양한 방법을 사용합니다.
X 서버, 모니터, 스크린의 연결과 차이점은 무엇인가요?
"X 서버가 양쪽을 통해 표시됩니다"는 무엇을 의미합니까? 하나의 "모니터"는 하나의 디스플레이 서버, 즉 하나의 X 서버를 의미하고, 두 개의 "모니터"는 두 개의 디스플레이 서버, 즉 두 개의 X 서버를 의미합니다.
"멀티스크린"은 무엇을 의미하나요? "화면"이란 디스플레이 모니터를 의미합니까?
감사해요.
답변1
X11의 기본과 그 뒤에서 무슨 일이 일어나는지 설명하기 위해 시각적인 예를 들어보겠습니다.
이 예에서는 호스트 A에 두 개의 "화면"이 있는 로컬 X11 서버가 있습니다. 일반적으로 모든 모니터에 걸쳐 있는 하나의 화면(:0.0)이 있는 서버는 하나만 있습니다(다중 모니터 응용 프로그램을 더 쉽게 만듭니다). HostB에는 두 개의 X 서버가 있으며, 두 번째 서버에는 물리적 디스플레이(예: VNC용 가상 프레임 버퍼)가 없습니다. HostC는 모니터가 없는 헤드리스 서버입니다.
터미널 1a, 2a, 5a, 6a: 로컬 터미널을 열고 디스플레이를 :0.0(기본값) 또는 :0.1로 설정하면 그래픽 프로그램의 그리기 호출이 메모리를 통해 로컬 X 서버로 직접 전송됩니다.
터미널 1b, 5b: 서버에 SSH로 연결하는 경우 일반적으로 디스플레이는 자동으로 로컬 X 서버(사용 가능한 경우)로 설정됩니다. 그렇지 않으면 전혀 설정되지 않습니다(이유는 터미널 3 참조).
터미널 2b, 6b: SSH를 통해 서버에 연결하고 "-X" 매개변수를 통해 X11 포워딩을 활성화하면 SSH 연결을 통해 자동으로 터널이 생성됩니다. 이 예에서 호스트 B의 TCP 포트 6010(6000+display#)은 호스트 A의 포트 6000(X Server #0)으로 트래픽을 전달합니다. 일반적으로 처음 10개의 디스플레이는 "실제" 서버용으로 예약되어 있으므로 ssh는 #10을 다시 매핑합니다(로그인할 때 ssh -X를 사용하여 연결하는 다음 사용자는 #11을 받게 됩니다). 추가 X 서버는 시작되지 않으며, 호스트 A의 X 서버 #0에 대한 권한은 ssh에 의해 자동으로 처리됩니다.
제4터미널: 호스트 이름(예: localhost)을 display/screen# 앞에 추가하면 X11은 메모리 대신 TCP를 통해서도 통신합니다.
제3터미널: SSH 터널을 먼저 설정하지 않고도 네트워크를 통해 직접 X11 명령을 보낼 수도 있습니다. 여기서 주요 문제는 네트워크/방화벽 등입니다. 이를 허용하도록 구성해야 하며(X11은 실제로 암호화되지 않음) X 서버(xhosts 또는 Xauthority)에 대한 권한을 수동으로 부여해야 합니다.
당신의 질문에 대답
X 서버, 모니터, 스크린의 연결과 차이점은 무엇인가요?
디스플레이만 참조일부X 서버어딘가에. "두 개의 디스플레이"라는 용어는 로컬 시스템의 ":0.0"("로컬 디스플레이")이 SSH 대상의 "localhost:10.0"("TCP 디스플레이")과 동일함을 의미합니다. "화면"은 X 서버의 다양한 가상 모니터(프레임 버퍼)를 나타냅니다. "localhost:10.0"은 로컬 X 서버로만 리디렉션되며 SSH 대상에서 시작된 X 서버는 없습니다(시나리오 터미널 2b/6b 참조).