![지원을 전달하지 않고 임대 호스트에서 SSH를 통해 X11을 전달할 수 있습니까?](https://linux55.com/image/136892/%EC%A7%80%EC%9B%90%EC%9D%84%20%EC%A0%84%EB%8B%AC%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EC%9E%84%EB%8C%80%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%20SSH%EB%A5%BC%20%ED%86%B5%ED%95%B4%20X11%EC%9D%84%20%EC%A0%84%EB%8B%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
임대한 Ubuntu 호스트에서 실행하는 데 필요한 모든 라이브러리가 포함된 GUI 프로그램이 있지만 호스트 자체는 SSH 연결 중에 -X를 사용하여 X 전달을 설정하려는 시도를 거부합니다. strace
디스플레이 UI 프로그램은 실행될 수 있지만 DISPLAY 없이 중지됩니다. 임대한 호스트에 대한 루트 액세스 권한이 없고 일반 사용자를 위해 X11을 전달하도록 구성되지 않았으며 호스트 지원에서는 사용자를 지원하지 않는다고 말합니다.
핵심 프로그램이 하나만 필요한데 X 포워딩을 할 수 있는 방법이 있나요? ssh -X -v
보고만 하세요:
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 Mar 2016
...
debug1: Remote: /usr/home/ipdb/.ssh/authorized_keys:2: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug2: x11_get_proto: /usr/bin/xauth list unix:10.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 1
...
X11 forwarding request failed on channel 0
로컬 호스트와 원격 호스트가 모두 방화벽 뒤에 있다는 점을 고려하면(따라서 DISPLAY=$REMOTEHOST:0은 작동하지 않습니다) 이를 수동으로 구성할 수 있는 방법이 있습니까? 이 호스트에는 Ubuntu 호스트의 동일한 dist 버전에서 복사한 xauth 및 xhost가 있습니다.
~/.ssh/rc는 연결 중에 실행되지만 매개변수는 전달되지 않습니다.
/usr/bin/xauth에 대한 참조가 호스트에 존재하지 않는 것 같습니다. 이것이 문제입니까? 자체 SSHD를 실행하고 올바른 xauth 경로로 구성할 수 있나요?
답변1
다양한 가이드에 따라 파일을 /etc/ssh/sshd_config
새 디렉터리에 복사한 후 동일한 디렉터리에서 다음 명령을 실행하여 새 키 쌍을 만들었습니다.
ssh-keygen -f myrsa -N ''
유사한 Linux 시스템에서 xauth 실행 파일을 복사하여 동일한 디렉터리에 배치했습니다.
그런 다음 sshd_config 파일을 다음 줄로 수정했습니다.
Port 22220
HostKey /path/to/directory/myrsa
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
XAuthLocation /path/to/directory/xauth
이제 다음 명령을 사용하여 포트 22220에서 X 전달이 활성화된 SSH 서버를 시작할 수 있습니다.
/usr/sbin/sshd -d -D -f /path/to/directory/sshd_config
ssh 명령을 사용하여 연결합니다.
ssh -X -p 22220 <hostname>
연결 후 환경변수 DISPLAY가 설정되어 있는지 확인합니다.
해당 호스트에서 X 프로그램을 실행하려면 몇 가지 라이브러리 파일(예: libxkbfile.so.1)을 X 지원이 설치된 유사한 Linux 시스템의 동일한 디렉터리에 복사해야 했습니다. 다음을 ldd
실행하여 이 작업을 수행했습니다. 이를 확인하는 프로그램, 해결되지 않은 라이브러리를 찾은 다음 작업 시스템에서 해당 라이브러리를 찾아 ldconfig -p | fgrep libxkbfile.so.1
scp를 사용하여 대상 시스템에 복사했습니다. 그런 다음 설정했습니다.
set LD_LIBRARY_PATH=/path/to/directory
이를 통해 다른 라이브러리를 찾고 X 프로그램을 실행하고 로컬 시스템에서 UI를 볼 수 있습니다.