ssh를 통해 원격 시스템에서 실행할 때 ‘프로토콜이 지정되지 않았습니다’오류 connect to X server 192.168.3.77:0.0 [root@localhost]# 나는

아래와 같이 그래픽 (GUI) 응용 프로그램을 실행하는 스크립트가 있습니다.

#cat gui.sh
#!/bin/bash
./gui -display 127.0.0.1:0.0

로컬 컴퓨터에서 실행하면 ./gui.sh완벽하게 작동합니다. 그러나 ssh를 통해 원격 컴퓨터에서 실행하려고하면 다음 오류가 발생합니다.

[root@localhost]# ssh -f 192.168.3.77 "cd /root/Desktop/GUI/ && "./gui.sh""
No protocol specified
gdm: cannot connect to X server 192.168.3.77:0.0
[root@localhost]#

나는 어떤 프로토콜을 요구하는지, 아니면 아무것도 빠졌습니까? 스크립트 [ ssh -f 192.168.3.77 "cd /root/Desktop/GUI/ && "./gui""] 없이 애플리케이션을 시작하여 직접 시도 했지만 결과는 동일합니다. 내가 좋아하는 다양한 조합을 시도 ssh -Y, ssh -fY더 많은하지만 결과는 동일합니다!
둘째, 내 응용 프로그램에는 프로그램이있는 디렉토리로 이동해야한다는 조건이 있습니다.
어떤 솔루션?



답변

옵션의 의미는 -display 127.0.0.1:0.0해당 gui프로그램에 따라 다르지만 “X 디스플레이 127.0.0.1:0.0에 표시”를 의미 할 가능성이 높습니다. 이것은 TCP를 통해 액세스되는 첫 번째 로컬 X 디스플레이입니다. 이것은 두 가지 이유로 거의 확실합니다. 먼저 IP 주소를 포함하면 트래픽이 로컬 액세스 대신 TCP를 통과하므로 로컬 X 디스플레이는로 표시 :0되지 않아야합니다 127.0.0.1:0. X 서버가 TCP 연결을 허용하는지 여부에 따라 TCP를 통과하는 것이 작동하지 않을 수 있습니다. 그래도 로컬 디스플레이의 최적화 기능을 잃게됩니다.

사용할 디스플레이는 일반적으로 DISPLAY환경 변수로 표시되며 해당 변수는 자동으로 올바르게 설정되는 경향이 있습니다. (경우 일반적으로 DISPLAY잘못된 값을 가지고 당신이 그것으로 장난 봤는데 때문입니다. 주요 예외의 사용이다 screen또는 tmux.)

프로그램은 아마도 DISPLAYxlib 호출에서 자동으로 발생하기 때문에 환경 변수 의 값을 찾을 것입니다 . 따라서을 호출해야 ./gui합니다. 스크립트는 유용한 기능을 수행하지 않습니다. 프로그램이 -display인수를 주장 하면 환경 변수를 사용하십시오.

./gui -display "$DISPLAY"

답변

ssh -Y그리고 ssh -X좋은 시작하지만 당신은뿐만 아니라 당신의 X 서버를 전달 않았다해야 하는가?

$ grep X /etc/ssh/sshd_config
X11Forwarding yes

그렇지 않으면 작동하지 않습니다.

확인해야 할 또 다른 사항은 DISPLAY 변수이며 다음과 같이 표시되어야합니다.

$ echo $DISPLAY
$ localhost:10.0

이것은 이후에 실행되었습니다 ssh -Y. -Y또는 없이 ssh를 사용하면 동일한 변수가 비어 -X있습니다.

사이의 차이 -X-YSSH의 매뉴얼 페이지를 참조하십시오.


답변

비디오는 오류를 단계별로 해결하는 방법을 설명합니다. 보지 않으려면 아래 텍스트를 따르십시오.

No protocol specified 오류는 “사용자가 GUI 응용 프로그램을 시작하는 방법을 모른다”고 “사용자에게 GUI 응용 프로그램을 시작할 권한이 없음”을 나타냅니다. 비디오에서 GUI 응용 프로그램은 dbca입니다.

이 비디오의 핵심 xhost +은 원격 시스템에서 로컬 시스템으로 GUI를 원격으로 표시 할 수있는 권한을 사용자에게 부여 하는 명령 을 실행하는 것 입니다.


답변

데비안 제시, 또한 추가 :

export XAUTHORITY=/.Xauthority

답변

DISPLAY 환경 변수를 다음과 같이 변경하여 해결 한 것과 동일한 문제가 발생했습니다.

export DISPLAY=:0.0

export DISPLAY=:10