GrabDuck

Терминальный сервер Xrdp+X11rdp: инструкция по запуску - unixforum.org

:

К сожалению в последних версиях Linux возникают проблемы с сервером FreeNX: то несовместим с пакетом libcairo2 версии 1.12 и выше, то проблемы с Wine 1.3 - 1.4, то проблемы с аутентификацией через PASSDB. И их можно перечислять.
Проблемы с Wine, когда запущенная windows-программа вылетает вместе с терминальной сессией, вроде как решена с приходом Wine 1.5.13 и выше.
Для устранения проблем с libcairo2 надо вручную накладывать патчи на исходники FreeNX и пересобирать, готовые пакеты с уже включенным патчем на сайте Этерсофта доступны только для Ubuntu 12.10.
С PASSDB вообще у меня весело получилось: пока настраивал, всё прекрасно работало, принёс готовый сервер к клиенту - и ни фига не пашет.
Плюс моё описание, которое я написал ещё в 2009 году по настройке терминального сервера FreeNX, уже не актуально, в новых версиях всё поменялось.

В качестве замены FreeNX я пока пробую связку Xrdp + X11rdp, которая позволяет организовать RDP-сервер на Линуксе, а затем заходить на него при помощи любого RDP-клиента.
В интернете много описаний по установке и настройке этого сервера, но приведу свою инструкцию.

ШАГ 1: компиляция X11RDP
1) устанавливаем пакеты для компиляции X11rdp:

Код

sudo apt-get install subversion gcc libice-dev pkg-config zlib1g-dev cvs autoconf libtool libssl-dev libpam0g-dev libx11-dev libxfixes-dev xfonts-base


2) скачиваем исходники X11rdp из SVN под профилем пользователя (не root'а!):

Код

svn co svn://server1.xrdp.org/srv/svn/repos/main/x11rdp_xorg71


текущая версия ревизии - 299
3) создаём каталог, где будут находиться все скомпилированные компоненты (владельцем каталога обязательно должен быть root!):

Код

sudo mkdir /opt/X11rdp


4) переходим в каталог с исходниками и компилируем:

Код

cd ~/x11rdp_xorg71
time sudo sh buildx.sh /opt/X11rdp


Компиляция в зависимости от мощности компьютера может занять от 30 минут до 2 часов.
5) создаём симлинк в каталоге /usr/bin:

Код

sudo ln -s /opt/X11rdp/bin/X11rdp /usr/bin/X11rdp

Чтобы не компилировать систему каждый раз, рекомендую после компиляции создать готовый DEB-пакет. Как это сделать, можно почитать здесь
При сборке DEB-пакета рекомендую поставить в зависимости пакеты libice6, libpam0g, libssl1.0.0, libx11-6, libxfixes3, xfonts-base, zlib1g.

На этом первая часть закончена, каких-либо настроек X11rdp не требуется

ШАГ 2: компиляция XRDP:
В большинстве источников рекомендуется скачать XRDP из GIT'а и скомпилировать вручную.
Я же рекомендую скачать исходники XRDP версии не ниже 0.6.0 из репозиториев своей системы и собрать deb-пакет. Во-первых, это более правильный метод, а во-вторых, меньше геморроя с настройками.
Исходники для Ubuntu
Исходники для Debian'а
Если в репозиториях вашей системы уже есть пакет XRDP версии 0.6.0 и выше, то переходите сразу к пункту 5 этого шага.
В более старых версиях XRDP 0.5.0 и 0.5.2 возможна проблема с русской клавиатурой.

Итак, приступим:
1) устанавливаем пакеты для правильной компиляции XRDP:

Код

sudo apt-get install debhelper libssl-dev libpam0g-dev autoconf automake libtool libx11-dev libxfixes-dev libfreerdp-dev pkg-config


2) скачиваем файлы xrdp_0.6.0.orig.tar.gz, xrdp_0.6.0-1.dsc и xrdp_0.6.0-1.debian.tar.gz в домашний каталог, распаковываем архив и накладываем патчи под профилем пользователя (не root'а!)

Код

dpkg-source -x ~/xrdp_0.6.0-1.dsc


3) переходим в каталог с исходниками XRDP и собираем пакет:

Код

cd ./xrdp-0.6.0
dpkg-buildpackage -b -tc


4) после компиляции устанавливаем пакет:

Код

sudo dpkg -i ./xrdp_0.6.0-1_i386.deb


5) редактируем файл /etc/xrdp/xrdp.ini, чтобы использовался только X11rdp:

Код

sudo gedit /etc/xrdp/xrdp.ini


содержимое этого файла должно быть таким:

Код

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
max_bpp=24

[xrdp1]
name=sesman-X11rdp
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
xserverbpp=24

6) запускаем XRDP:

Код

service xrdp start

На этом настройки закончены, пробуем подключиться к нашему серверу с помощью любого RDP-клиента. Используем логин и пароль от любой учётной записи на сервере.

Обнаруженные проблемы:
1) в стартовом окне терминальной сессии не работает переключение раскладок, поэтому в настройках клиента сразу прописываем либо нужную раскладку, либо логин и пароль пользователя;
2) при использовании клиента Remmina выбирайте версию не ниже 0.9.x, более ранние не поддерживают протокол RDPv5;
3) в настройках клиента рекомендуется использовать цветовую гамму не более 16bit;
4) не работает проброс звука, поэтому в клиенте сразу выставляем "Не воспроизводить звук", если такая настройка имеется.

Использованная литература:
Источник1
Источник2

Пробуем, отписываемся о найденных проблемах и методах их решения, если таковые имеются.