2019-06-17

Windows 10에서 CentOS 7 remoting하다가 만난 오류들에 관해

0. 편의를 위해 리눅스를 윈도우에서 조작할 필요가 생겼다.

하지만 리눅스는 만만하게 접속을 허락(?)하지 않았다.

그 과정에서 만났던 에러를 해결하는 데에만 1 달을 소비했다.



1. yum install

====

yum install xorg-x11-server-Xorg
yum install xorg-x11-xauth
yum install xorg-x11-apps

당연히 X11 server가 설치되어 있어야 한다.

물론 어지간히 GNOME Desktop이라도 설치한 경우엔

이 패키지가 이미 설치되어 있다고 한다.

그리고 xauth는 X server에 접속하기 위한 자격증명(?)을 위한 것 같다.

x11-apps는 "xclock"같이 매우 간단한 프로그램을 실험삼아 실행시켜보기 위해 설치.

====

putty : 다운로드 페이지

Xming : 다운로드 페이지

(설치를 도와줄 다른 블로그)

putty는 ssh를 이용해 통신하기 위해 설치했다.

Windows 10에서 Win key + R, cmd를 실행시킨 뒤

'ssh -X username@localhost.localdomain' 처럼 접속해서

ssh를 이용할 수도 있다고 하지만...

실제로 해보니 제대로 되는 게 없었다.

(-Y 플래그를 사용하기도 하는 것 같던데 어차피 해결 안 되니까 정확하게 읽진 않았다)

물론 ssh 접속은 되니까 console mode로 조작은 가능하지만

내가 원하는건 GUI 환경이었다.



2. Setting!!

하도 많은 설정을 건드리고 다닌 탓에

정확히 어떤 설정이 의미있었는지 잘 기억나진 않지만

그래도 기억을 더듬어서 작성하였으니

자세한건 구글에서 추가 검색이 필요하다.



일단 CentOS에서 설정해줘야 할 것.

sudo vim /etc/ssh/sshd_config 명령어로 설정파일에 들어가면

X11Forwarding, X11DisplayOffset, X11UseLocalhost 등이 보인다.

위의 설정을

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

로 바꿔주었다. (기본값은 앞에 "#"이 붙어서 주석처리 되어있을 수 있다)

'포워딩'은 중개업자처럼 가운데에서 무언가를 전달해주는 행동을 말한다.

이런 짓을 해야 하는 이유는, X는 마치 네트워크 프로토콜처럼

서버와 클라이언트의 개념으로 윈도우창을 띄워주기 때문이다.

한 컴퓨터 내에서 통신하던 X server와 client에서 벗어나

그것을 다른 컴퓨터로도 forwarding하겠다는 의미이다.

X11 Display Offset은 이런 X 서버에서 디스플레이의 넘버링을 시작할 위치이다.

디폴트로 10이 되어있다.

이론적으로 X11은 여러개의 디스플레이를 가질 수 있다.

(X11 서버의 구조를 시각화한 다이어그램)

그리고 Windows 10에서 설정해줘야 할 것.

아까전에 설치한 Xming(XLaunch)을 실행시킨다.

그러면 윈도우 화면 오른쪽 아래에 Xming 아이콘 하나가 달랑 뜨는데

이게 전부다.

더블 클릭해보면 이런 화면이 뜬다.

(할많하않)

이후에 putty를 통해 접속할 시


3. Link start!!


(putty 실행 사진)

Host Name에 localhost.localdomain 혹은 아이피 주소를 적어주면 된다.

나는 공유기에 물려있기 때문에 192.168.xxx.xxx 식으로 입력해주었다.

'내 리눅스 아이피가 몇이지?' = $ ifconfig 명령어로 확인할 수 있다.

그리고 좌측 카테고리에서 Connection - SSH - X11에 가보면

Enable X11 forwarding 옵션이 있다. 여기에 체크를 해줘야 한다.

그리고 아래에 X display location은 공백으로 둬도 되는데

만약 필요하다면 localhost:0.0 혹은 :10.0 등을 입력해보기 바란다.



그리고 open을 눌러서 ssh 환경을 실행시킨 뒤

$ xclock

같은 평범한 GUI 프로그램을 실행시켜보며 테스트해본다.

물론 X window system은 '이 글자를 여기여기에 배치하고 이런 메뉴를 놓아줘'

식으로 작동하기 때문에

동영상 플레이어, 자체적인 GUI를 사용하는 프로그램을 구동할 경우엔

정상적으로 실행되지 않을 수도 있다고 한다.

+a : $ xdg-open 은 CentOS에서 file manager의 모습을 보여준다.



4. 추가 내용

기억을 되짚어 작성해보았다.



- "Warning: Missing charsets in String to FontSet conversion" 경고가 뜹니다.

--> $ xclock을 실행하기 전에 $ export LC_ALL=C 를 입력해준다.



- "Error: Can't open display:" 라고 뜹니다.

--> $ export DISPLAY=localhost:10.0 을 입력해보는 것도 해결책이 될 수 있다.

하지만 근본적으로 $ echo $DISPLAY에서 공백이 뜨는 경우에만 해당될 수 있다.

이럴 땐 Xming이 실행중인지, X display location이 정확한지 확인해보는 것이 좋다.



- "PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused" 라는 에러가 뜨면서 GUI가 실행되지 않습니다.

--> $ sudo vim /usr/bin/startx 를 찾아 들어가서 defaultserverargs= 부분을 찾은 뒤

defaultserverargs="-multiwindow -listen tcp"

라고 수정해주는 것이 방법일 수 있다.

또한 Xming이 제대로 동작하고 있는지를 확인해보는 것도 좋은 방법이 될 수 있다.





5. 또 다른 오류를 많이 겪었지만 일단 생략하였다.

이미 지나간 에러들이라서 검색하기 쉽지 않았다(...)

(하도 많은 문서를 검색해보다보니 history 저 뒤편으로 밀려나버려 이제 찾을 수 없다)

에러메세지 혹은 증상을 댓글로 남겨주시면

제가 아는 선에서 의심되는 원인을 짚어드리겠습니다.

댓글 없음:

댓글 쓰기