SSH를 통해 원격 컴퓨터에서 실행할 때 "지정된 프로토콜 없음" 오류

SSH를 통해 원격 컴퓨터에서 실행할 때 "지정된 프로토콜 없음" 오류

아래와 같이 그래픽(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으나 결과는 마찬가지!
둘째, 나의 지원을 위해서는 먼저 프로그램이 위치한 디렉토리를 입력해야 한다는 전제조건이 있습니다.
해결책이 있나요?

답변1

이것영상에서는 이 오류를 해결하는 방법을 단계별로 설명합니다. 보기 싫으신 분들은 아래 내용을 따라가주세요.

프로토콜이 지정되지 않음 오류는 "사용자가 GUI 응용 프로그램을 시작하는 방법을 모릅니다" 및 "사용자에게 GUI 응용 프로그램을 시작할 권한이 없습니다"를 의미합니다. 영상 속 GUI 애플리케이션은 dbca.

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

답변2

이 옵션의 의미는 프로그램 -display 127.0.0.1:0.0에 따라 다르지만 gui"X 디스플레이 127.0.0.1:0.0에 표시"를 의미할 가능성이 높습니다. 이는 TCP를 통해 액세스되는 최초의 로컬 X 디스플레이입니다. 이는 두 가지 이유로 거의 확실히 잘못된 것입니다. 먼저 , :0현지 127.0.0.1:0X 서버가 TCP 연결을 허용하는지 여부에 따라 TCP를 통한 연결이 작동하지 않을 수 있습니다. 이렇게 해도 기본 디스플레이가 갖는 최적화 기능을 잃게 됩니다.

사용할 디스플레이는 일반적 DISPLAY으로 환경 변수로 표시되며 이 변수는 자동으로 올바르게 설정되는 경향이 있습니다. (보통 DISPLAY잘못된 값이 있으면 엉망으로 만들었기 때문입니다. 주요 예외는 screenor 를 사용하는 것입니다 tmux.)

DISPLAYxlib가 호출될 때 자동으로 발생하는 경향이 있으므로 프로그램은 환경 변수의 값을 찾을 수 있습니다 . 따라서 을 호출하면 ./gui스크립트가 유용한 작업을 수행하지 않습니다. 프로그램에서 이 -display매개변수를 사용하도록 요구하는 경우 환경 변수를 사용하도록 만드세요.

./gui -display "$DISPLAY"

답변3

ssh -Y좋은 시작 이겠지만 ssh -XX 서버도 전달하고 있습니까?

$ grep X /etc/ssh/sshd_config
X11Forwarding yes

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

확인해야 할 또 다른 사항은 DISPLAY 변수입니다. 이 변수는 다음과 같이 읽어야 합니다.

$ echo $DISPLAY
$ localhost:10.0

이것은 나중에 실행됩니다 ssh -Y. SSH를 사용하지 않거나 -Y동일한 변수가 비어 있는 경우 -X.

-X와 의 차이점에 대해서는 -Yssh 매뉴얼 페이지를 읽어보세요.

답변4

저도 같은 문제가 있었는데 DISPLAY 환경 변수를 변경하여 문제를 해결했습니다.

export DISPLAY=:0.0

도착하다

export DISPLAY=:10

관련 정보