X11 on Windows Linux Subsystem

먼저, Windows 10 에서 지원하는 Linux Subsystem 기능에 대해 이야기한다. 잘 모르겠다면 이 글을 읽고 설치에 도전해 보자. 그런데 글 내용을 보면 이거랑 관련 없다. Babun, Mintty, Git on Bash, Putty 전부 포함이다

  • SSH에 접속한 서버에서 X11 Forwarding 을 받고 싶은 경우를 이야기한다. 단적으로, 접속한 서버에서 파이어폭스 브라우저를 실행하면 내 윈도우 화면에 브라우저 창이 실행되는 거다. 이걸 따로 이야기하고 싶지 않으니 Xming 이나 VcXsrv 을 참고해 설치해보자.

참고로, 이 방법은 Client측 PC의 X Server로 접근하는 무식한 방법이므로, 일반 데스크탑 PC에서 서버로 접속했을 때엔 사용할 수 없을 것 같다. 좀 더 알아보고 보충해야겠다.

그리고, ssh_config 에서 X11ForwardTrusted 를 확인하지 않았었다. 이걸 설정하니까 Server에서 DISPLAY를 따로 설정하지 않아도 잘 된다? xauth generate 를 한번 더 해보긴 했는데.. 한번 더 실험이 필요하다.

Windows에서 한 일

클라이언트 PC에서 작업한 일이다. 참고로 나는 Ubuntu 를 Linux Subsystem 으로 설치했는데, 어느 리눅스 버전이어도 상관 없을 것이다.

  1. Xming 또는 VcXsrv 를 설치해서 실행시켰다. 트레이 아이콘에 ‘X’ 라고 떠 있으면 완료. (이걸 X Server 라고 부른다)
  2. Ubuntu Console을 하나 열어서,/etc/ssh/ssh_config (sshd_config 가 아니다) 파일을 확인했다. 여기에서 ForwardX11 yes, ForwardX11Trusted yes 를 확인했다. (주석 처리되어 있다면 주석을 제거, sudo 권한 필요)
  3. SSH 접속을 하면, 다음 에러 메시지가 떠서 보기 싫었다.
    No xauth data; using fake authentication data for X11 forwarding.
    
    그래서 다음과 같이 처리했다.
    $ xauth list # ~/.Xauthority 파일이 없었다!
    $ xauth generate :0 . trusted # ~/.Xauthority 파일을 만들어준다고 한다..
    
  4. (Optional) Xming 또는 VcXsrv 의 설치 디렉토리에 가면 X0.hosts라는 파일이 있다. 여기서 Server의 Hostname 또는 IP를 적어줘야 한다.

Server에서 한 일

직접 SSH로 접속하고 나서 설정해야 할 것을 적었다.

  1. /etc/ssh/sshd_config 에서 X11UseLocalHost 가 yes 로 되어 있거나, 활성화되어 있지 않아야 한다. 만약 no로 되어 있으면 yes 로 변경해야 한다.
  2. $DISPLAY 환경 변수를 아예 Windows (클라이언트 PC) 의 Hostname 또는 IP 주소로 설정해버린다.
    export DISPLAY=192.168.0.xxx:0
    
    참고로, 뒤에 :0 또는 :10 같이 여러 예제가 인터넷에 나도는데, Windows 에서 X 아이콘에 마우스를 가져다 대면 Hostname:X.X 라고 나올 것이다. X.X 를 저기에 쓰는 것이다. (나는 0.0 이라고 떠서 그냥 0만 적었다.)
  3. firefox 를 실행해 보자. 끝.

Hugo 기반 / JimmyStack 테마를 사용 중입니다.