리눅스 X11 포워딩(X11 Forwarding) - ssh 접속으로 GUI 프로그램 실행하기 리눅스

원격에 있는 리눅스 장비(서버)에 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



덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

71342
4132
1862262

ad_widget_2