아래와 같이 그래픽(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:0
X 서버가 TCP 연결을 허용하는지 여부에 따라 TCP를 통한 연결이 작동하지 않을 수 있습니다. 이렇게 해도 기본 디스플레이가 갖는 최적화 기능을 잃게 됩니다.
사용할 디스플레이는 일반적 DISPLAY
으로 환경 변수로 표시되며 이 변수는 자동으로 올바르게 설정되는 경향이 있습니다. (보통 DISPLAY
잘못된 값이 있으면 엉망으로 만들었기 때문입니다. 주요 예외는 screen
or 를 사용하는 것입니다 tmux
.)
DISPLAY
xlib가 호출될 때 자동으로 발생하는 경향이 있으므로 프로그램은 환경 변수의 값을 찾을 수 있습니다 . 따라서 을 호출하면 ./gui
스크립트가 유용한 작업을 수행하지 않습니다. 프로그램에서 이 -display
매개변수를 사용하도록 요구하는 경우 환경 변수를 사용하도록 만드세요.
./gui -display "$DISPLAY"
답변3
ssh -Y
좋은 시작 이겠지만 ssh -X
X 서버도 전달하고 있습니까?
$ grep X /etc/ssh/sshd_config
X11Forwarding yes
그렇지 않으면 작동하지 않습니다.
확인해야 할 또 다른 사항은 DISPLAY 변수입니다. 이 변수는 다음과 같이 읽어야 합니다.
$ echo $DISPLAY
$ localhost:10.0
이것은 나중에 실행됩니다 ssh -Y
. SSH를 사용하지 않거나 -Y
동일한 변수가 비어 있는 경우 -X
.
-X
와 의 차이점에 대해서는 -Y
ssh 매뉴얼 페이지를 읽어보세요.
답변4
저도 같은 문제가 있었는데 DISPLAY 환경 변수를 변경하여 문제를 해결했습니다.
export DISPLAY=:0.0
도착하다
export DISPLAY=:10