리눅스2023. 4. 18. 18:35

반달가면 이글루에서 백업 - http://bahndal.egloos.com/534415

 

원격에 있는 리눅스 장비(서버)에 ssh 접속해서 GUI 기반의 어플리케이션을 실행하기 위한 방법이다. 예를 들어 서버에 접속해서 해당 서버에 설치되어 있는 웹브라우저를 실행하면 웹브라우저 실행창이 클라이언트쪽에 표시되도록 하는 것이다.

X윈도우(X-Windows, X11) 기반의 기능이므로, 서버와 클라이언트 양쪽 다 X윈도우 기반이어야 한다는 점에 유의하자.

먼저 서버쪽 설정을 알아보자. 우분투 서버 기준이다.

X11 포워딩에 필요한 xauth 패키지를 설치하자.

# xauth 설치
sudo apt-get install xauth
# 시험용으로 파이어폭스도 설치
sudo apt-get install firefox

만약 서버쪽에도 GUI 기반의 데스크탑 환경을 최소한으로 구성하고자 하면 이전에 올렸던 게시물을 참고하자. GUI 데스크탑 환경을 구성할 경우 xauth 패키지가 같이 설치되므로 다시 설치해줄 필요는 없다.

/etc/ssh/sshd_config 파일을 편집해야 한다. 시스템 설정을 바꾸는 것이므로 루트(root) 권한을 필요로 한다.

sudo vi /etc/ssh/sshd_config

/etc/ssh/sshd_config 파일에서 아래와 같이 X11Forwarding 항목을 yes로 설정하자.

X11Forwarding yes

이제 홈 디렉토리에서 .Xauthority 파일을 새로 만들어 주자. 처음에 리눅스를 설치할 때 생성된 .Xauthority 파일로는 제대로 동작하지 않는 경우도 생기는 듯하다. chown, chmod 등으로 소유자나 권한을 변경하는 것으로는 잘 안되는 것 같고 그냥 맘 편하게 새로 만드는게 가장 확실한 듯.

# 홈 디렉토리로 이동
cd ~
# 혹시 모르니 기존의 .Xauthority 파일 백업
mv .Xauthority .Xauthority.old
# .Xauthority 파일 생성
touch .Xauthority

제대로 설정되어 있지 않다면 클라이언트에서 접속할 때 "timeout in locking authority file ~/.Xauthority" 이런 식의 오류 메시지가 나올 것이다. 물론 X11 포워딩도 동작하지 않는다. 이 상태에서 GUI 어플리케이션을 실행하면 "X11 connection rejected because of wrong authentication" 오류가 발생.

서버쪽 설정은 이것으로 완료되었다.

이제 클라이언트쪽 설정을 할 차례다. 클라이언트의 X11 포워딩 기능을 활성화하자. 모든 사용자에 대해 설정하고 싶다면 /etc/ssh/ssh_config 파일을 편집하고, 현재 사용자에 대해서만 설정하고 싶다면 /etc/ssh/ssh_config 파일을 ~/.ssh/config 파일로 복사한 후 편집한다. 아래의 예시는 현재 사용자에 대해 X11 포워딩 설정을 하는 경우이다.

# 홈 디렉토리 아래에 .ssh 디렉토리 생성
mkdir ~/.ssh
# /etc/ssh/ssh_config 파일을 복사하여 ~/.ssh/config 파일로 생성
cp /etc/ssh/ssh_config ~/.ssh/config

이제 ~/.ssh/config 파일을 편집한다.

vi ~/.ssh/config

~/.ssh/config 파일에서 ForwardX11 항목을 yes로 설정하면 된다.

Host *
  ForwardX11 yes

설정을 마쳤으면 서버에 ssh 접속을 할 때 -X 옵션을 사용해서 X11 포워딩을 활성화할 수 있다.

# server.net 서버에 접속, 사용자 john
ssh -X john@server.net
# 파이어폭스 웹브라우저 실행(클라이언트쪽에 실행창이 표시된다)
firefox

 

 

728x90
Posted by 반달가면