LINUX
2019.05.29 / 01:01

10. ssh와 xhost를 통해 원격으로 GUI를 사용해 보자.

탁돌이개발자
추천 수 11

일반적으로 원격으로 작업하는 경우, 주로 터미널을 통한 TUI 작업을 하였다.
그러나, 그래프 확인 등의 GUI 작업이 필요한 경우도 종종 있는데, 본 포스팅에서는 그 방법에 대해 소개하고자 한다.

하고자 하는 작업 상황은 아래와 같다.
1. Local 에서 Remote로 SSH를 통해 접속하여 작업을 한다.
2. 작업 결과로 나온 그래픽 화면을 내 컴퓨터(Local)에 띄워서 보고자 한다.

목표

필요한 작업을 먼저 간단히 요약하면 다음과 같다.

1. Local 에서 DISPLAY 환경 변수 및 xhost 설정 2. Local 과 Remote 모두에서 sshd_config, ssh_config 값 설정 3. ssh -X -p 포트 계정명@주소 를 통해 ssh 접속 후 테스트


이를 바탕으로 진행하도록 하겠다.
내용이 조금 길 수도 있으나, 전혀 어렵지 않고 단지 귀찮은게 많은 것 뿐이라 차분히 따라하면 쉽게 할 수 있을 것이다.

1. Localhost에서 DISPLAY 환경변수 및 xhost 설정

DISPLAY 환경변수는 작업 결과를 보여줄 화면을 담당하는 변수이다.
local의 우리 컴퓨터의 화면에 결과를 출력할 것이므로 DISPLAY 값을 다음과 같이 설정한다.

export DISPLAY=localhost:0.0


DISPLAY 설정이 완료되었으면 xhost 설정을 해야 한다. xhost는 그래픽 화면(X윈도)의 처리를 담당한다. 
xhost가 포함된 x11-xserver-utils 패키지를 설치한다.

sudo apt install x11-xserver-utils

이후 xhost 설정을 아래와 같이 진행한다.

xhost + Remote_IP ex) xhost + 192.168.0.2


여기서 xhost + IP의 의미는 "IP"에서 들어오는 연결을 허용한다는 뜻이다.
만약 IP 에서의 연결을 막으려면 xhost - IP 처럼 해주면 된다.
이 때,  xhost + 만 해주면 모든 연결을 허용한다는 뜻이고, xhost - 를 하면 모든 연결을 차단한다는 뜻이다. 냥 xhost 만 입력하면 등록된 IP의 목록을 확인할 수 있다.
좀 더 자세한 내용은 여기를 참고하자.

마지막으로 화면 출력을 담당할 프로그램을 설치한다.
위에서 한 작업은 어디까지나 화면으로 연결해주는 길을 설정해준 것 뿐이지, 아직 실제로 출력해주는 화면 프로그램을 설치하지 않은 상태이다.

현재 길만 만들어놓은 상황

대표적인 프로그램으로는 무료 프로그램인 Xming과 국산 유료 프로그램인 Xmanager가 있다.
둘 중 아무거나 선택하여 다운로드한다. 
본 포스팅에선 Xming을 바탕으로 진행하도록 하겠다.
Xming(무료): https://sourceforge.net/projects/xming/
Xmanager(국산/유료/30일 평가판): https://www.netsarang.co.kr/products/xmg_overview.html

설치가 완료되었으면 Xming을 실행시킨다.

로컬에서 Xming 실행

xming을 실행하면 우측 하단 트레이에 아이콘이 보이게 된다.

Xming 동작 확인

이후 local 쉘에서 DISPLAY 환경 변수와 xhost가 정상적으로 등록되어 있는지 확인한다.

DISPLAY 및 xhost 확인

둘 다 정상적으로 나온다면 화면 쪽의 준비작업이 모두 끝난 것이다.

화면 출력을 담당할 프로그램 설치 완료

2. Local 과 Remote 모두에서 sshd_config, ssh_config 값 설정

위에서 화면 출력 부분은 모두 처리했으나, ssh를 통해 그래픽 화면을 출력할 수 있도록 ssh 설정을 추가로 해줘야 한다.

SSH의 X11 포트포워딩이 안된 상황



아래의 작업을 local과 remote에서 모두 수행한다.

1. sshd_config에서 X11Forwarding yes 로 설정한다.

sudo vim /etc/ssh/sshd_config

여기서 X11Forwarding no를 yes로 바꿔준다.

/etc/ssh/sshd_config 수정



2. ssh_config에서 ForwardAgent yes, ForwardX11 yes, ForwardX11Trusted yes 로 설정한다.

sudo vim /etc/ssh/ssh_config
/etc/ssh/ssh_config 수정

위의 과정이 Local과 Remote 모두에서 완료되었으면 모든 준비는 끝난 것이다.

SSH의 X11 포트포워딩 완료
3. 동작 테스트

Remote에 ssh접속한 뒤, xclock을 실행시킨 화면을 내 컴퓨터(Local)에서 볼 수 있게 해보자.

xclock을 이용한 간단한 테스트 목표

우선 Remote로 -X 옵션을 붙여 ssh를 이용해 접속한다.

ssh -X -p 포트번호 계정@주소 ex) ssh -X -p 2022 occidere@192.168.0.2

이후 테스트를 진행하기 위한 그래픽 시계 프로그램인 xclock을 설치한다.

sudo apt install x11-apps


이후 xclock 명령어를 입력해 Remote에서 시계 프로그램을 실행시키고, 그 결과 화면을 Local 에서 확인해 본다.

실행 결과 정상 동작 확인

정상적으로 시계 화면이 내 컴퓨터(Local) 에 Xming을 통해 실행된다면 성공이다.
만일 X11 forwarding request failed on channel 0 뜰 경우 여기를 참고하자.

4. 마치며

여기까지 해서 ssh, xhost, Xming(Xmanager)을 이용한 원격 디스플레이 설정을 해 보았다.
생각보다 쓸 일이 많으므로 평소에 익혀두면 듯 하다.