X 창을 터널링하려고 합니다. 그렇게 하는 경우:
user@local: ssh -X user@remote xclock
효과가있다. 하지만 먼저 컴퓨터에 로그인한 다음 프로그램을 실행하면 실패합니다.
user@local: ssh -X user@remote
user@remote: xclock
No protocol specified
Error: Can't open display: :0
무엇이 잘못되었나요?
편집하다
$DISPLAY
리모컨에서 변수를 확인했습니다 .
user@local: ssh -X user@remote "echo $DISPLAY"
:0.0
로그인 후 원격으로 동일한 값으로 설정해도 아무런 효과가 없습니다. 권장 설정을 따르 십시오 $DISPLAY
.:10.0
user@local: ssh -X user@remote
user@remote: DISPLAY=:10.0 xclock
대화형 세션과 비대화형 세션에 서로 다른 $DISPLAY 값이 필요한 이유를 아직도 이해하지 못합니다.
답변1
변수 확인전시하다올바르게 설정됨로컬호스트:10.0. 그렇지 않다면,
export DISPLAY=localhost:10.0
, 그런 다음 시도해 보세요시계다시.
그런데 왜 "DISPLAY"를 0.0이 아닌 10.0으로 설정해야 합니까?
이것X 서버(또는X 윈도우, 또는X11)은 바로 애플리케이션을 표시하기 위해 애플리케이션이 연결되기를 기다리는 서버입니다. 이는 응용 프로그램이 다음 위치에 있는 소켓을 통해 X 서버에 연결되는 컴퓨터에서 발생합니다./tmp, 일반적으로 호출/tmp/.X11-유닉스. 하지만 모든 서버가 그렇듯,X11원격 컴퓨터에 접속하고 원격 컴퓨터에서 실행 중인 애플리케이션을 그래픽으로 표시할 수 있습니다.
그러나 이 기능은 많은 보안 위험을 초래하므로 X11 서버를 원격 응용 프로그램에 여는 것은 매우 어렵습니다(다른 구성 파일에서 동일한 옵션을 최소 3번 지정해야 함).
지금 입장하세요SSH, 대신 이것을 안전하게 만듭니다.-Y/-X옵션SSH로컬 X11 서버를 원격 애플리케이션에 안전하게 여는 데 필요한 모든 세부 사항을(암호화된 트래픽을 통해) 처리합니다. 그러나 표시하고 싶을 때외딴xclock을 로컬에서 사용하는 경우 접속할 X11 서버가 자체 X11 서버가 아니라 원격 시스템(서버를 시작한 서버)에 있는 서버임을 원격 애플리케이션에 지시해야 합니다.SSH회의). 그래서시계출력을 보내야 함아니요로컬 소켓에/tmp하지만 네트워크 포트에는(이것은127.0.0.1:6010, 어느SSH다행히 줄여서로컬호스트:10), 어떤에서SSH이를 로컬 컴퓨터로 다시 보내고 궁극적으로 출력을 그래픽으로 표시하는 일을 담당합니다.
서로 다른 SSH 연결을 분리하고 싶지 않은 경우(둘 이상 있을 수 있음)10다음과 같은 단위로컬호스트:10.0, 로컬호스트:20.0,...) 진술을 변경해야합니다
X11DisplayOffset 10
존재하다/etc/ssh/sshd_config당신이 좋아하는 것은 무엇이든 (솔직히 말하면 이유가 없습니다).
원격 디스플레이를 사용할 수 있게 만드는 것은 이 명령문입니다.아니요항구에6000(이것은 ~이 될 것이다로컬호스트:0.0), 그러나 항구에는6010. 직접 확인할 수 있습니다.
$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from
root@vps:~# ss -lntp | grep 6010
LISTEN 0 0 127.0.0.1:6010 *:* users:(("sshd",16172,8))
LISTEN 0 0 ::1:6010 :::* users:(("sshd",16172,7))