RDP-сервер на базе CentOS с поддержкой русской языковой раскладки

Про настройку xRDP информации достаточно много. Личный опыт и беглый поиск заставляют неосторожно предположить, что за 15-20 минут рабочий вариант можно получить. На деле же расходуется больше времени. Выясняется, что Xvnc из коробки с русской раскладкой не работает, для настройки клавиатуры в xRDP может понадобиться сгенерировать keymap-файл для русского языка, Chrome не работает в среде с множественными сессиями для одного пользователя и что-нибудь еще.

Недавно мне пришлось пройти этот путь с CentOS 7.6. В статье — лог действий. И в качестве бонуса — приятная тема оформления.

Что будет в результате?

  • терминальный сервер с оболочкой Xfce;
  • 2 раскладки клавиатуры (US, RU), переключение комбинацией Alt + Shift;
  • множественные сессии для 1 пользователя (опция);
  • возможность подключиться к удаленному рабочему столу через Интернет с помощью стандартного клиента Windows/MacOS/Linux;
  • приличный GUI с радующими глаз элементами.

Самое необходимое

Предполагается, что у вас чистая установка CentOS 7 Minimal.

  1. Установим зависимости:

    # yum install vim unzip git autoconf automake -y
    
  2. Настроим часовой пояс:

    # timedatectl set-timezone Europe/Moscow
    
  3. Добавим EPEL-репозиторий:

    $ wget http://mirror.logol.ru/epel/epel-release-latest-7.noarch.rpm
    # rpm -ivh epel-release-latest-7.noarch.rpm
    
  4. Установим графическую оболочку:

    # yum groupinstall "X Window system" -y
    # yum groupinstall "Xfce" -y
    # systemctl isolate graphical.target
    # systemctl set-default graphical.target
    # echo "PREFERRED=xfce4-session" >> /etc/sysconfig/desktop
    
  5. Настроим системную локаль и клавиатуру:

    # localectl set-locale LANG=ru_RU.UTF-8
    # localectl --no-convert set-x11-keymap us,ru pc105 dvorak, grp:alt_shift_toggle
    
  6. Установим плагин Xfce для индикации и переключения раскладки клавиатуры:

    # yum install xfce4-xkb-plugin -y
    

    Добавить плагин на панель инструментов Xfce нужно будет вручную.

  7. Установим RDP-сервер:

    # yum install xrdp -y
    # systemctl enable xrdp
    # systemctl start xrdp
    
  8. Отключим Xnvc и оптимизируем скорость xRDP:

    Зачем отключаем Xnvc? В Xnvc проблемы с русской раскладкой.

    # vim /etc/xrdp/xrdp.ini
    

    Закомментируйте секцию [Xnvc].

    В секции [Globals] установите настройки:

    crypt_level=medium
    bitmap_cache=true
    bitmap_compression=true
    bulk_compression=true
    max_bpp=16
    

    Ниже будет рекомендация отключить эффекты для окон Xfce (п. 12) и установить простой сплошной фон для рабочего стола (п. 13).

  9. Сконфигурируем клавиатуру для xRDP:

    # vim /etc/xrdp/xrdp_keyboard.ini
    

    Замените содержимое файла на следующее:

    [default_rdp_layouts]
    rdp_layout_us=0x00000409
    rdp_layout_de=0x00000407
    rdp_layout_fr=0x0000040C
    rdp_layout_it=0x00000410
    rdp_layout_jp=0x00000411
    rdp_layout_jp2=0xe0010411
    rdp_layout_jp3=0xe0200411
    rdp_layout_jp4=0xe0210411
    rdp_layout_ru=0x00000419
    rdp_layout_se=0x0000041D
    rdp_layout_pt=0x00000816
    rdp_layout_br=0x00000416
    rdp_layout_pl=0x00000415
    
    [rdp_keyboard_ru]
    keyboard_type=4
    keyboard_type=7
    keyboard_subtype=1
    model=pc105
    options=grp:alt_shift_toggle
    rdp_layouts=default_rdp_layouts
    layouts_map=layouts_map_ru
    
    [layouts_map_ru]
    rdp_layout_us=us,ru
    rdp_layout_ru=us,ru
    
  10. Опционально: разрешите пользователям создание множественных сессий и активируйте автозакрытие сессий отключившихся пользователей.

    Такое поведение требуется в некоторых специфических ситуациях. Скорее всего, именно вам оно не понадобится.

    # vim /etc/xrdp/sesman.ini
    

    Установите Policy=UBDC иKillDisconnected=true.

    Важно: некоторые программы (например, Chrome) в такой среде не будут правильно работать (множество инстансов под одним пользователям — часто сложная ситуация).

    Кстати, среди популярных браузеров множественные инстансы под одним пользователем поддерживает Firefox. Предполагается режим -no-remote и создание/выбор отдельного профиля под каждый экземпляр программы.

    Полезно сразу отредактировать строку запуска Firefox в системном меню:

    # vim /usr/share/applications/firefox.desktop
    

    Замените

    Exec=firefox %u
    

    на

    Exec=firefox %u -no-remote -P
    
  11. Настройте файрвол в зависимости от требуемого уровня безопасности.

    Если сервер имеет внешний публичный IP и вы бы хотели подключаться к удаленному рабочему столу напрямую, используйте следующую команду:

    # firewall-cmd --permanent --zone=public --add-port=3389/tcp
    # firewall-cmd --reload
    

    Более безопасный вариант — VPN (в данной статье не рассматривается).

  12. Отключите эффекты для окон Xfce.

    См. меню «Настройки» → «Диспетчер окон (дополнительно)» → «Эффекты».

  13. Установите сплошной цветовой фон для рабочего стола.

    См. меню «Настройки» → «Рабочий стол».

Настройка оформления GUI (опция)

Предлагается установить тему Ant, значки arc-icon-theme и сделать настройки Xfce шаблонными для всех новых пользователей.

  1. Установим тему Ant:

    $ wget https://github.com/EliverLara/Ant/archive/master.zip
    # unzip master.zip -d /usr/share/themes/
    $ rm master.zip
    
  2. Установим значки из arc-icon-theme:

    $ git clone https://github.com/horst3180/arc-icon-theme --depth 1 && cd arc-icon-theme
    # ./autogen.sh --prefix=/usr
    # make install
    
  3. Применим параметры оформления для текущего пользователя:

    Прежде всего, нужно авторизоваться нужным пользователям в графическом интерфейсе и в эмуляторе терминала запустить:

    $ xfconf-query -c xsettings -p /Net/ThemeName -s "Ant-master"
    $ xfconf-query -c xfwm4 -p /general/theme -s "Ant-master"
    $ xfconf-query -c xsettings -p /Net/IconThemeName -s "Arc"
    $ xfconf-query -c xsettings -p /Gtk/FontName -s "Cantarell 10"
    

    На вкус и цвет… По умолчанию предлагаю в качестве системного шрифта Cantarell (последняя команда).

  4. Сделаем настройки Xfce шаблонными для всех новых пользователей.

    Предполагается, что вы выполнили нужные настройки Xfce в некоторой учётке (в примере — eu) и хотите их сделать шаблонными.

    # mkdir /etc/skel/.config
    # cp -r /home/eu/.config/xfce4 /etc/skel/.config
    

Можно пользоваться!