Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


...

Style
importhttps://cdn.netsarang.net/web/confluence/css/cf-document-main.css


Mint 21.x의 XRDP 설치 및 사용 법은 아래 URL 참조하시기 바랍니다.

Ubuntu 22Mint 21.04에서 2에서 하는 XRDP 설치 및 사용

목차

Table of Contents
outlinetrue
exclude목차
stylenone

...

  1. /etc/xrdp/sesman.ini에서 사용자 wm(Window Manager) 설정을 다음과 같이 설정

    code

    Style
    importhttps://cdn.netsarang.net/web/confluence/css/cf-document-main.css
    themeConfluence
    $ sudo vi /etc/xrdp/sesman.ini
    ...
    [Globals]
    …
    EnableUserWindowManager=true
    ; Give in relative path to user's home directory
    UserWindowManager=.vnc/startwm.sh => $HOME에 대한 상대경로입니다.
    ; Give in full path or relative path to /etc/xrdp
    DefaultWindowManager=startwm.sh => /etc/xrdp에 대한 상대 경로입니다.
    ...



  2. /etc/xrdp/sesman.ini에서 Policy=UBC로 변경(UBC=> User, Bit Per Pixel, Connect, 모든 연결에 새로운 세션 생성)

    Code Block
    $ sudo vi /etc/xrdp/sesman.ini
    …
    [Sessions]
    …
    Policy=UBC
    …


  3. 같은 사용자로 하는 멀티 세션 설정을 위해서 DBUS 설정이 필요합니다. /etc/X11/xint/Xsession 파일 상단에 다음 내용 추가
    DBUS 데몬 설정은 Ubuntu 22.04 XDMCP 설정의 '같은 사용자로 하는 다중 세션 설정'에서 이루어졌을 수 있습니다. 이 경우라면 이 부분은 생략 가능합니다.

    Code Block
    $ which dbus-launch || sudo apt install dbus-x11
    $ sudo vi /etc/X11/Xsession
    #!/usr/bin/bash
    export $(dbus-launch)
    ...


...

  1. 위 멀티 세션 설정 1.에서 정한 경로에서 startwm.sh 파일 수정합니다.(없으면 생성합니다.)

    Code Block
    $ sudo vi .vnc/startwm.sh
    #!/bin/sh
    # xrdp X session start script (c) 2015, 2017, 2021 mirabilos
    # published under The MirOS Licence
    
    # Rely on /etc/pam.d/xrdp-sesman using pam_env to load both
    # /etc/environment and /etc/default/locale to initialise the
    # locale and the user environment properly.
    
    if test -r /etc/profile; then
            . /etc/profile
    fi
    
    if test -r $HOME/.profile; then
            . $HOME/.profile
    fi
    
    #test -x /etc/X11/Xsession && exec /etc/X11/Xsession # => 삭제 혹은 주석 처리
    #exec /bin/sh /etc/X11/Xsession # => 삭제 혹은 주석처리
    
    ######### 추가되는 부분 #############
    # 재연결을 위해 vncpasswd로 생성한 암호로 변경. vncpasswd는 8자만 인식하므로 사용자 암호가 8자를 넘어가는 경우 xrdp 세션 실행 직후 해당 세션에 연결이 안되는 경우가 있음.
    (sleep 3; cp ${HOME}/.vnc/passwd ${HOME}/.vnc/sesman_passwd-${USER}@$(hostname)$(echo "$DISPLAY" | sed  -E "s/.*:([0-9]{1,})\.0/:\1/"))&
    
    if [ -f "$HOME/.vnc/startwm.sh" ] && [ -x "$HOME/.vnc/startwm.sh" ]; then
            $HOME/.vnc/startwm.sh
    else 
            exec /bin/sh /etc/X11/Xsession
    fi


  2. xrdp를 사용할 사용자마다 vncpasswd 명령을 사용하여 위 1.의 $HOME/.vnc/passwd 파일을 생성

    Code Block
    $ vncpasswd
    Password: 
    Verify: 
    Would you like to enter a view-only password (y/n)? n 
    A view-only password is not used


  3. Xorg 서버에 대한 멀티 세션 생성 및 재접속을 위해서 다음 과정을 추가로 진행합니다.
    1. x11vnc 설치 및 설정

      Code Block
      $ sudo apt install x11vnc


    2. x11vnc가 /etc/xrdp/startwm에서 startwm.sh에서 자동 실행되도록 설정합니다.

      Code Block
      $ sudo vi /etc/xrdp/startwm.sh
      #!/bin/sh
      ...
      
      ######### x11vnc 관련 추가되는 부분 #############
      x11vnc -repeat -display $DISPLAY -shared -forever -rfbauth $HOME/.vnc/passwd -rfbport 59`printf %02d $(expr match "$DISPLAY" '.*:\([0-9]*\).*')`&
      
      ######### 추가되는 부분 #############
      (sleep 3; cp ${HOME}/.vnc/passwd ${HOME}/.vnc/sesman_passwd-${USER}@$(hostname)$(echo "$DISPLAY" | sed  -E "s/.*:([0-9]{1,})\.0/:\1/"))&
      
      if [ -f "$HOME/.vnc/startwm.sh" ] && [ -x "$HOME/.vnc/startwm.sh" ]; then
              $HOME/.vnc/startwm.sh
      else 
              exec /bin/sh /etc/X11/Xsession
      fi

      x11vnc 설명:

      1. x11vnc는 Xorg 서버에 vnc로 접속할 수 있도록 합니다.

      2. 이 명령의 옵션은 Xorg 디스플레이 번호와 vnc 포트의 값을 같게 하도록 하는 내용이 포함되어 있습니다.
      3. -repeat: 키가 연속적으로 입력이 될 수 있도록 하는 옵션입니다.

      4. -shared: 화면 공유 옵션입니다.

      5. -forever: vnc 세션을 닫아도 다음 연결을 위해 대기하도록 하는 옵션입니다.

      6. -rfbauth: vnc 세션의 접속 암호로 사용할 파일을 지정합니다.

      7. -rfbport: vnc 접속을 위해 대기하기 위한 포트입니다. 위 명령은 $DISPLAY의 값과 연동하도록 하였습니다.

...