본문 바로가기

Server/Unix, Linux

SSH로 GUI접속하기 with Matlab (feat. 대체 X가 뭐에요?)

반응형

난 이론따위 안궁금하고 방법만 궁금하다면? 바로 스크롤다운~

Prologue

지금 내가 쓰는 OS는 Ubuntu 18.04 + VBox로 WIN10을 쓰고있다. 아무래도 계산자원으로 사용하는 컴퓨터이기 때문에, base를 linux 계열로 하고, 국가 연구소의 업무 특성상 한글....과 내부 web에 접속을 위해서는 윈도우를 필수로 써야만 하기 때문에 컴퓨터를 두 대 두기 싫어서, 가상환경으로 윈도우를 쓰고 있다.

이 상황에서 새로운 업무는 주로 matlab을 사용하고, 또 거기에다 GUI를 사용해야 협업이 편하기 때문에, GUI사용이 가능한 세팅을 해야만 했다. 그래서 이 기회를 살려, X window (X11 등 다양한 이름으로 불림)에 대한 아주 기초적인 이해를 하려고 한다.

X window

Birth of X

Xming, X11, X11-fowarding... 수많은 이름들을 들었다. 공통적으로 나오는 X는 대체 무엇일까...?
X란 간단하게만 말하면 Linux계열에서 사용하는 GUI(Graphical User Interface)의 일종이다. 종래의 server(현재에도 수많은 server가 성능향상을 위해)는 GUI가 따로 존재하지 않고 terminal을 통해 text만을 사용해서 접속을 했다. 하지만 바야흐로 1984년, 당시 두 청년(?)이 리눅스에도 GUI를 도입해야겠다!!라는 생각을 하게 되었다. 그래서 탄생한 것이 X!!! (이름한번 믓져버리게 지어버렸스야!!)

Ref1- X에 대한 더 자세한 역사가 궁금하다면...

Minimal feature of X

윈도우를 포함하여 현재 대부분의 GUI는 직접 디스플레이(모니터)와 연동이 되어 작동을 한다. 하지만 X window는 개발 당시의 목적 자체가 원격으로 접속이 가능한 GUI였기 때문에 그 방식이 전혀 다르다. X는 Server와 서버-클라이언트의 통신 형태로 동작을 한다. 그래서 내가 원격으로 접속을 하여 마우스를 움직이면 그 움직임이 Server에 전송이 되고, 그게 다시 시각화가 되서 client인 나에게 돌아온다. 그래서 접속 환경에 따라 그 모습이 다양하게 변하며, 자유롭지만, 너무 무거운 작업(3D 이미지 송출 등)은 힘들거나 느릴 수 있다.

X11, Xming...

X11이란 X의 11번째 버전을 이야기한다. 1987년 X11이 발표 되었고 그 이후로 X11이후에 추가 라벨링으로 X11기반에서 더욱 발전시킨 것들이 나왔지만 그냥 통용해서 X11이라고 부르고 있다. 하지만 더 줄여서 그냥 X라고 해도 통속적으로는 X11로 이해한다. 윈도우에서는 X를 기본적으로 지원하지 않기 때문에, 이를 지원해주는 X server 프로그램을 깔아야 한다. Xming은 이러한 대표적인 무료 오픈소스 소프트웨어이다. 그 외에도 cygwins' xwin, VcXsrc 등 많은 X server 프로그램이 존재하니 입맛(?)대로 사용해도 되고, SSH프로그램 (Xshell, MobaXterm)에서 자체적으로 X server (어느 곳에서는 X11 forwarding)이라고 부르기도 함)를 지원해서 이를 깔아도 된다. 나도 직접적으로 사용해 본 조합은 윈도우에서는 Putty + Xming 또는 Xshell6를 사용해보있다. Xshell6는 개인 용도에서만 무료이기 때문에 회사에서 공짜로 쓸려면.. Putty를.... 윈도우 powershell이 많이 좋아졌지만 아직까지 X11 forwarding을 지원해주는지는 제대로 알아보지 않아서 모르겠다. OS X에서는 XQuartz를 이용하면 된다.

Ref2- 이 내용을 거의 그대로 참고했습니다

How to use GUI with X

Windows10

윈도우 계열에서는 앞에서도 말했듯이 X server를 사용하기위한 소프트웨어 + X forwarding을 지원해주는 SSH 클라이언트 소프트웨어를 깔아야 한다. 가장 유명한 조합이 Putty + Xming (무료이며 오픈소스) 또는 Xshell 이 두가지가 가자 유명하지만 좀 더 검색하면 잘 나오니 참고!
Putty나 Xshell 모두 X11-forwarding을 하려면 추가적인 설정에서 이것저것 찾아보면 잘 나온다.
우선 기본적으로 아주 오래된 리눅스 서버가 아니라면 대부분 X11-forwarding은 기본 옵션으로 잘 되어있다. 하지만 일부로라도 관리자가 금지시켰을 수도 있으니 세팅을 확인해보고싶다면 위의 Ref2를 참고하시길...
그리고 X11 forwarding에서 X display location을 적어야 하는 경우도 있는데, 이럴 때에는 localhost:0.0 또는 127.0.0.1 이라고 하는데 이건 그냥 그래픽을 어디다 띠울것이냐.. 바로 내 컴퓨터에 띄울 것이다를 이야기하는 것이지요.
심심하다면 Ref3- 초보해커와 127.0.0.1 이야기를 읽어보세요.

Ref4- 2018년 말까지 powershell에서 X11-foward가 안됬어요

Linux

아주 쉽다.
그냥 ssh접속 할 때 -X 옵션 하나만 넣어주면 끝!!
ssh ID@<IP addr or domain> -p <port> -X
참 쉽죠? 끝~
아 matlab을 사용하려면 매틀랩 깔 때 openGL rendering을 활성화 시켜주면 되는데.. 보통 기본적으로 matlab 설치시에 알아서 잘 되는 것으로 알고있습니다...ㅎ

반응형