Terminal server ubuntu server: Ubuntu + XRDP + x11RDP терминальный сервер, с поддержкой звука, для серфинга в интернете — пошаговое руководство / Хабр

Ubuntu + XRDP + x11RDP терминальный сервер, с поддержкой звука, для серфинга в интернете — пошаговое руководство / Хабр

Особенно нетерпеливых отсылаю сразу в конец статьи где будет ссылка на готовый .deb-пакет для установки.

А для всех остальных…

Что это такое и для чего это нужно


В первую очередь данное решение можно использовать как очень бюджетный вариант реализации безопасного доступа к интернет сотрудникам небольшой фирмы.

История номер один. (основано на реальных событиях)


Предположим бухгалтеру, в конце отчетного периода, когда все «на ушах», на

эл.почту приходит страшное письмо от «Налоговой Полиции» в котором говорится о том, что её фирма попала под жуткую проверку и ей следует немедленно ознакомиться с официальным документом который находится в прикреплённом к письму файле.

В панике бухгалтер пытается открыть прикреплённый файл и… все компьютеры фирмы подключенные в данный момент к внутренней локальной сети получают порцию вируса щифровальщика который парализует работу фирмы не не один день.


В случае с реализацией доступа через терминал на всех! компьютерах блокируется прямой доступ в интернет. Если работнику понадобилось в сеть для серфинга (почта, скайп, мессенджер) то он просто щелкает по иконке на рабочем столе и попадает на альтернативный рабочий стол где он может делать всё что угодно. В случае заражения при просмотре почты или любым другим способом вирус попадает на одинокую локальную машину (терминальный сеанс) которая не имеет доступа к сети предприятия и другим компьютерам. Так же в данном сеансе не хранятся важные документы и бухгалтерские базы данных. Поэтому ущерба, даже при полном удалении информации внутри сеанса, не будет абсолютно ни какого. Так же терминальную сессию можно просто свернуть в трей и открывать по мере необходимости, если пикнуло сообщение от мессенджера или поступил скайп звонок.

История номер два. (основано на реальных событиях)


Предположим один из сотрудников принес на флешке взломанную лицензионную программу которую поставил к себе на компьютер, в данном случае не рассматриваем доменные структуры AD, речь идет о небольших фирмах где не содержат штат сетевиков. После установки данной программы она спокойно может пожаловаться разработчикам через интернет что на компьютере по такому то IP кто то поставил взломанную версию и спокойно пользуется.

Дальше дело техники. Причем разборки могут быть очень серьёзные.

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

Предисловие


Данное руководство, в первую очередь, ориентировано на начинающих системных администраторов желающих разобраться в сути вопроса. Так что для продвинутых в тексте может оказаться много лишнего. В руководстве постараюсь максимально подробно описать процесс настройки linux терминального сервера использующегося для безопасного интернет серфинга и описать решение известных проблем.

Для того чтобы все прошло успешно настоятельно советую, для начала, использовать те же самые версии ПО что и в данном описании. Потом, на основе полученного опыта, вы сможете реализовать данный проект на удобном Вам оборудовании и ПО.

Сборка и тестирование производилось на виртуальной машине от virtualbox. При использовании чистого железа так же могут возникнуть проблемы с настройками драйверов. Из программного обеспечения были использованы Ubuntu 16.04 LTS server / x11RDP 7.6 / xRPD 0.9.2. На других версиях данное решение не тестировалось и не проверялось.

XRDP


XRDP является специальным прокси-сервером который прослушивает RDP port 3389 на предмет внешних запросов. Принимает на него подключения и далее, в зависимости от настроек, переадресовывает их на внутренние порты OS.

Для установки скомпилируем необходимые пакеты:

sudo apt install -y git autoconf libtool pkg-config libxrandr-dev nasm libssl-dev libpam0g-dev \
libxfixes-dev  libx11-dev  libxfixes-dev libssl-dev libxrandr-dev libjpeg-dev flex \
bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev make libfuse-dev


По умолчанию в репозиториях UBUNTU 16. 04 находится пакет xRDP v0.6.0 в котором я не смог найти решения для рализации передачи звука. Поэтому собирать новую версию xRDP будем из исходников.

На многих сайтах советуют клонировать свежую версию при помощи git:

git clone git://github.com/FreeRDP/xrdp.git


Но, в данном случае, возникает риск того что, на момент тестирования, вы можете столкнуться с совершенно новой версией имеющей значительные отличия от v0.9.2 и что то может пойти не так. Поэтому скачиваем и распаковываем фиксированный пакет XRDP v0.9.2 с сайта разработчиков.

cd~ 
wget https://github.com/neutrinolabs/xrdp/archive/v0.9.2.zip
unzip v0.9.2
mv xrdp-0.9.2 xrdp 


Перейдем в каталог с XRPD и начнем компиляцию:

cd ~/xrdp
./bootstrap


На данном этапе необходимо указать компилятору что в готовую сборку необходимо добавить модуль поддержки звука. Более подробно об этом можно прочесть в файле который теперь находится на вашем диске в каталоге с исходниками XRDP.

cat ~/xrdp/sesman/chansrv/pulse/pulse-notes.ubuntu.txt


Установим библиотеки необходимые для переадресации звука.

sudo apt-get install -y libjson0-dev libsndfile1-dev


Добавляем ключ активирующий звук —enable-load_pulse_modules при конфигурации пакета, собираем и устанавливаем.

./configure --enable-load_pulse_modules --enable-jpeg --enable-fuse --disable-ipv6
make
sudo make install


Теперь скопируем ключ защиты. В данном файле содержится пара ключей RSA, используемая для аутентификации удаленного клиента. Открытый ключ является самозаверяющим. Если этого не сделать то при подключении получим ошибку протокола RDP.

sudo mkdir /usr/share/doc/xrdp
sudo cp /etc/xrdp/rsakeys.ini /usr/share/doc/xrdp/rsakeys. ini


Добавляем XRDP в автозагрузку. Для автозагрузки будем использовать systemd:

sudo sed -i.bak 's/EnvironmentFile/#EnvironmentFile/g' /lib/systemd/system/xrdp.service
sudo sed -i.bak 's/sbin\/xrdp/local\/sbin\/xrdp/g' /lib/systemd/system/xrdp.service
sudo sed -i.bak 's/EnvironmentFile/#EnvironmentFile/g' /lib/systemd/system/xrdp-sesman.service
sudo sed -i.bak 's/sbin\/xrdp/local\/sbin\/xrdp/g' /lib/systemd/system/xrdp-sesman.service
sudo systemctl daemon-reload
sudo systemctl enable xrdp.service 


Перезагружаемся.

sudo reboot


Проверим прошла ли установка:

xrdp -v

$ xrdp: A Remote Desktop Protocol server.

Copyright © Jay Sorg 2004-2014

See www.xrdp.org for more information.

Version 0.9.2


Если все сделано верно то теперь можно попробовать подключиться к серверу при помощи любого RDP клиента с другого компьютера. Или установить на этой же тестовой машине клиент freerdp:

sudo apt install -y freerdp-x11


И подключится локально внутри системы.

xfreerdp /v:127.0.0.1


Дальше стартовой заставки дело не пойдет потому что у нас пока не установлена серверная часть ПО которой прокси сервер XRDP был бы должен передать управление.

x11RDP


В качестве серверной части могут быть использованы серверные модули поддерживающие разные протоколы передачи данных. В данном варианте будем использовать x11RDP v7.6.

Небольшое отступление


Все дело в том, что установленный нами ранее прокси XRDP 0.9.2 не может, без доработок, перебрасывать подключения к предыдущей версии сервера x11RDP v7.1 на котором, в свою очередь, отсутствует известная проблема с переключением раскладок клавиатуры ru/en как при создании нового сеанса так и при переподключении к старой сессии.

А при использовании старой версии прокси XRDP 0.6.0 с которой работает сервер x11RDP v7.1 мы не сможем осуществить переброс звука так как XRDP 0.6.0 не поддерживает ключ —enable-load_pulse_modules.

Для установки x11RDP v 7.6 вернемся в каталог:

cd ~/xrdp/xorg/X11R7.6


Создадим каталог для установки пакета и произведем сборку.

sudo mkdir /opt/X11rdp
time sudo ./buildx.sh /opt/X11rdp


Сборка происходит достаточно долго 15-30 мин. Команда time позволит нам увидеть, по окончании процесса процесса, сколько было затрачено времени.

Создадим симлики:

sudo ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp
sudo ln -s /usr/share/fonts/X11 /opt/X11rdp/lib/X11/fonts


Теперь у нас есть и RDP прокси и RDP сервер которому прокси передаст управление. Но нет графического приложения которое RDP сервер сможет вывести на экран.

Для дальнейшего тестирования, чтобы убедиться что все установки прошли успешно, установим графический эмулятор терминала xterm.

sudo apt -y install xterm


И попробуем подключиться к серверу со стороны, или локально если ранее установили freerdp.

xfreerdp /v:127.0.0.1


Теперь из меню необходимо выбрать x11RDP чтобы указать прокси какому именно серверу должно быть передано управление и ввести логин и пароль к ubuntu серверу.

Если все верно то на экране мы увидим графический интерфейс терминала xterm.

Настройка языковой консоли и режима переключения языков


Почти все основные настройки клавиатуры в ubuntu осуществляются при прмощи пакета setxkbmap.

Для начала закроем терминальную сессию и вернемся в консоль нашего ubuntu сервера

посмотрим что творится с клавиатурой.

setxkbmap -print –verbose

$ keycodes: xfree86+aliases(qwerty)

types: complete

compat: complete

symbols: pc+us+ru:2+group(alt_shift_toggle)

geometry: pc(pc104)

xkb_keymap {

xkb_keycodes { include «xfree86+aliases(qwerty)» };

xkb_types { include «complete» };

xkb_compat { include «complete» };

xkb_symbols { include «pc+us+ru:2+group(alt_shift_toggle)» };

xkb_geometry { include «pc(pc104)» };

};


Теперь подключимся к серверу терминалов и в терминале xterm выполним ту же команду:

setxkbmap -print –verbose

$ Trying to build keymap using the following components:

keycodes: xfree86+aliases(qwerty)

types: complete

compat: complete

symbols: pc+us+inet(pc105)

geometry: pc(pc105)

xkb_keymap {

xkb_keycodes { include «xfree86+aliases(qwerty)» };

xkb_types { include «complete» };

xkb_compat { include «complete» };

xkb_symbols { include «pc+us+inet(pc105)» };

xkb_geometry { include «pc(pc105)» };

};


Обратим внимание на несоответствие в показаниях. На нашем ubuntu сервере все нормально:

symbols: pc+us+ru:2+group(alt_shift_toggle)


Есть русская консоль и определены клавиши переключения языка alt_shift. На сервере терминалов противоположность:

symbols: pc+us+inet(pc105)


Есть только английский язык и клавиши переключения языка не определены.

Есть еще одна странность. Локально, на сервере ubuntu, модель клавиатуры определилась как pc104:

geometry: pc(pc104)


А на сервере терминалов как pc105:

geometry: pc(pc105)


Если вы решили производить тестирование не на виртуальной машине, а на чистом железе

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

Вернемся к ubuntu серверу и посмотрим что установлено в конфигурационных файлах системы

по умолчанию

cat /etc/default/keyboard

$ # KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL=«pc105»

XKBLAYOUT=«us,ru»

XKBVARIANT=»,»

XKBOPTIONS=«grp:alt_shift_toggle,grp_led:scroll»

BACKSPACE=«guess»


Установим hwinfo (сборщик информации об аппаратной части системы) и посмотрим информацию о железе:

sudo apt install -y hwinfo
sudo hwinfo | grep XkbModel

$ XkbModel: pc104


В итоге аппаратно модель клавиатуры, в нашем случае определяется как pc104, в файлах конфигурации системы прописано обращение к устройству pc105. На локальном сервере определяется pc104, на сервере терминалов pc105. Из за данного несоответствия, в частности, возникает несколько глюков. Многие пишут что не могут справиться с настройкой локали на терминальном сервере. У некоторых пропадает русификация после переподключении к отвалившейся сессии и те пе.

Откроем в любом текстовом редакторе (я использую в примере редактор nano) файл конфигурации системы и исправим тип клавиатуры по умолчанию в соответствии с данными полученными от hwinfo:

sudo nano /etc/default/keyboard


XKBMODEL=«pc104»

Файл клавиатурных настроек программы XRDP 0. 9.2 находится в файле

/etc/xrdp/xrdp_keyboard.ini. Эти данные прокси передает xRDP серверу как данные клиента который производит подключение. Откроем его и добавим в конец данного файла блок поддержки русской локали.

→ Источник

Предварительно исправив модель клавиатуры на верную model=pc104 (в оригнальной версии установлена pc105):

sudo nano /etc/xrdp/xrdp_keyboard.ini


Добавляем в конец файла:

[rdp_keyboard_ru]

keyboard_type=4

keyboard_subtype=1

model=pc104

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


Перезагружаемся.

Подключаемся к терминальному серверу. Проверяем клавиатурные настройки:

setxkbmap -print -verbose

$ Trying to build keymap using the following components:

keycodes: xfree86+aliases(qwerty)

types: complete

compat: complete

symbols: pc+us+ru:2+group(alt_shift_toggle)

geometry: pc(pc104)

xkb_keymap {

xkb_keycodes { include «xfree86+aliases(qwerty)» };

xkb_types { include «complete» };

xkb_compat { include «complete» };

xkb_symbols { include «pc+us+ru:2+group(alt_shift_toggle)» };

xkb_geometry { include «pc(pc104)» };


Все в порядке, клавиатура определяется верно:

geometry: pc(pc104)

и появился русский язык с переключением по alt_shift. Закрываем сеанс оставляя его работать в фоне и переподключаемся к нему же снова чтобы проверить что не возникает известной проблемы при которой локаль пропадает при переподключении к уже открытому ранее сеансу.

ЗВУК


В ubuntu старше 10.10, по умолчанию, за вывод звука отвечает сервер pulseaudio. В десктопных дистрибутивах он уже установлен. В серверных нет. Поэтому установим его.

sudo apt install -y pulseaudio


Посмотрим и запишем номер версии пакета который по умолчанию установился в нашу систему:

pulseaudio –version

$ pulseaudio 8.0


Теперь нам необходимо собрать библиотеки для переадресации звука. Подробно об этом написано в файле с исходниками XRDP который мы уже просматривали ранее при сборке XRDP.

cat ~/xrdp/sesman/chansrv/pulse/pulse-notes.ubuntu.txt


Для начала скачаем исходники pulseaudio. Сделать это можно двумя способами.

1. Скачать общую версию с сайта разработчиков (freedesktop.org/software/pulseaudio/releases/) скачивать надо именно ту версию которую мы определили ранее. В нашем случае pulseaudio 8.0

2. Более правильно — подключить deb-src репозитории системы и получить исходники которые использовали авторы данного ubuntu дистрибутива.

По умолчаню ссылки на исходники в ubuntu отключены. Для подключения отредактируем файл списка репозиториев:

sudo nano /etc/apt/sources.list


Необходимо удалить значки # перед всеми списками deb-src репозиториев.

Было:

deb ru.archive.ubuntu.com/ubuntu xenial universe

#deb-src ru.archive.ubuntu.com/ubuntu xenial universe

deb ru.archive.ubuntu.com/ubuntu xenial-updates universe

#deb-src ru.archive.ubuntu.com/ubuntu xenial-updates universe


Стало:

deb ru. archive.ubuntu.com/ubuntu xenial universe

deb-src ru.archive.ubuntu.com/ubuntu xenial universe

deb ru.archive.ubuntu.com/ubuntu xenial-updates universe

deb-src ru.archive.ubuntu.com/ubuntu xenial-updates universe


В противном случае получим ошибку:

$ E: Вы должны заполнить sources.list, поместив туда URI источников пакетов


Скачиваем исходники:

cd ~
sudo apt update
apt-get source pulseaudio
sudo apt-get build-dep pulseaudio
cd ~/pulse*
time dpkg-buildpackage -rfakeroot -uc -b


Переходим в установочный каталог XRDP:

cd ~/xrdp/sesman/chansrv/pulse/


Исправляем make файл.

sudo nano Makefile


В строчке:

PULSE_DIR = /home/lk/pulseaudio-1.1


Меняем путь на наш каталог с библиотеками pulseaudio. Причем, обратите внимание, конструкции типа ~/pulseaudio* в данном случае не проходят. Необходимо точно прописать адрес каталога.

PULSE_DIR = /home/admin/pulseaudio-8.0


Замените admin на имя пользователя в Вашей системе. Сохраняем исправленный файл и делаем:

sudo make


Если все выполнено верно в каталоге будут скомпилированы 2 новых библиотеки
module-xrdp-sink.so и module-xrdp-source.so.

Осталось только скопировать их в рабочий каталог с библиотеками сервера pulseaudio:

sudo chmod 644 *.so
sudo cp *.so /usr/lib/pulse*/modules


После перезапуска звук будет активирован.

Осталось установить любую удобную графическую оболочку. Для терминального сервера желательно что то не ресурсоемкое.

XFCE

Минимальный набор элементов:

sudo apt-get install xfce4


Полный набор элементов:

sudo apt-get install xubuntu-desktop 


LXDE

Минимальный набор элементов:

sudo apt-get install lxde-core


Полный набор элементов:

sudo apt-get install lxde


В зависимости от версии установленной графической оболочки, для её запуска возможно понадобится настроить файл . xsession

Для LXDE

echo lxsession > ~/.xsession

Для XFCE

echo xfce4-session > ~/.xsession

Готовый пакет для установки

github.com/suminona/xrdp-ru-audio

в который включены:

XRDP v0.9.2 + скомпилированные библиотеки pulseaudio 8.0 + исправленный keyboard.ini файл для поддержки русификации. Те же кто не хочет сам собирать бакенд x11RDP v7.6 по этой же ссылке могут скачать готовый deb пакет бакенда xorg v.0.2.0. Порядок установки для совсем ленивых

sudo apt-get -y install pulseaudio
sudo dpkg -i xrdp-v0.9.2-rus-audio.deb
sudo dpkg -i xorgxrdp-0.2.0.deb
sudo apt install -y xfce4 chromium-browser
sudo reboot


Повторюсь что пакеты собирались практически на коленках и работа протестирована только

на ubuntu 16.04 server. Работоспособность данных .deb-пакетов на других системах не гарантирована.

Установка XRDP в Ubuntu 20.04

В настоящее время существует множество вариантов удалённого подключения к рабочим местам. Кроме того, стоимость аренды виртуальной машины хорошей производительности в облаке в месяц, сопоставима с ценой кружки хорошего кофе. Такие удалённые виртуальные машины удобно использовать с офисных слабых компьютеров, из поездок с ноутбуком и слабым Интернет-соединением, запускать на них длительные задачи, как например перепроведение документов в 1С, скачивание больших файлов.

Ещё можно организовать общий сервер на базе Ubuntu 20.04 в облаке или на мощном компьютере и совместно использовать его ресурсы с помощью удалённого доступа. В этой статье мы рассмотрим как выполняется установка XRDP Ubuntu 20.04.

Содержание статьи:

Что такое XRDP

XRDP – это реализация протокола удалённого рабочего стола Microsoft (RDP) с открытым исходным кодом, которая позволяет графически управлять удалённой системой.

В отличие от коммерческого продукта, XRDP в Linux позволяет работать одновременно с одним компьютером или виртуальной машиной неограниченному числу пользователей, что позволяет активно использовать XRDP для разворачивания терминальных серверов на базе Ubuntu 20. 04.

Шаг 1. Поиск пакета

В Ubuntu 20.04 можно получить установить программу с помощью утилиты apt. Давайте установим XRDP из репозитория Ubuntu 20.04. Для этого, с помощью терминала, вы можете проверить, есть ли пакет xrdp в хранилище пакетов Ubuntu 20.04:

sudo apt searh xrdp

Шаг 2. Обновление системы

Такой пакет есть, поэтому вы можете, предварительно обновив систему, простым путём установить xrdp на Ubuntu 20.04. Обновляем и перезагружаем для принятия изменений в ОС:

sudo apt –y update && sudo apt –y upgrade && sudo reboot

Шаг 3. Установка пакетов

После перезагрузки можно устанавливать XRDP из репозитория Ubuntu 20.04

sudo apt install xrdp

Обращаю внимание, что при установке генерируется сертификат, который необходим для функционирования RDP протокола, строка ниже указывает, что сертификат успешно создан:

ssl_gen_key_xrdp1 ok

Шаг 3.

Настройка службы XRDP

В связи с особенностями системы Ubuntu 20.04, необходимо ввести пользователя xrdp, от имени которого работает XRDP в системе, в группу ssl-cert. Выполните команду:

sudo adduser xrdp ssl-cert

Затем добавьте службу xrdp в автозапуск и перезапустите её для применения изменений:

sudo systemct enable xrdp

sudo systemctl restart xrdp

sudo systemctl status xrdp

Если результат выполнения команды выглядит так, как на скриншоте, то все прошло успешно. В финале предоставьте доступ из внешней сети к порту 3389 в файрволле Ubuntu 20.04:

sudo ufw allow from 192.168.2.0/24 to any port 3389

sudo ufw allow 3389

Шаг 4. Поиск IP адреса

С помощью любого клиента RDP можно подключаться по имени компьютера, возможно для этого нужно дополнительно настроить DNS. Лучше получить доступ по IP-адресу сервера, на котором установлен XRDP. Чтобы узнать IP-адрес, необходимо в терминале ввести команду:

sudo ip a

На моём скриншоте обведён IP-адрес виртуальной машины с Ubuntu 20.04, который автоматически присвоен сетевому интерфейсу eth2. Сетевых интерфейсов может быть несколько, у каждого из них могут быть свои IP-адреса, к которым так же можно подключаться по RDP.

Шаг 5. Проверка подключения

Стандартный клиент RDP для Windows называется Подключение к удалённому рабочему столу. В нем необходимо ввести IP-адрес или имя сервера, можно указать логин и пароль для входа в удалённую машину, настроить различные параметры взаимодействия.

На скриншоте ниже можно видеть окно для входа Xorg, куда требуется ввести логин, в моем случае user и пароль, в моем случае 1. Для смены раскладки клавиатуры в Ubuntu 20.04 используется комбинация клавиш Super+Пробел (с моей клавиатуры клавиши Windows + Пробел). Если в окне раскладка не меняется, и вводится пароль не на том языке, то необходимо отключить клиент RDP, закрыть его, поменять язык в Windows на нужный и снова подключиться к удалённой машине.

Настройка XRDP Ubuntu 20.04 практически завершена.

Ошибка черный экран XRDP в Ubuntu

Для исправления такой ошибки необходимо внести изменение в файл, расположенный в папке /etc/xrdp, запускающий каждую сессию удалённого доступа XRDP с именем startwm.sh:

Внесите изменения в файле startwm.sh:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

Перед строкой:

test –x /etc/X11/Xsession && exec /etc/X11/Xsession

как показано на скриншоте. Это обнуляет системные переменные, сформированные предыдущими сеансами. В результате, мы избавляемся от чёрного экрана при подключении по RDP к Ubuntu 20.04

После внесения изменений необходимо перезапустить службу XRDP:

sudo systemctl restart xrd

И можно выполнить подключение к Ubuntu по RDP:

Выводы

Сегодня мы выяснили как подключиться к Ubuntu по RDP  и настроить XRDP сервер. Клиенты RDP существуют для любого устройства: телефона, планшета, ноутбука, любого компьютера. Местонахождение этой виртуальной или реальной машины с Ubuntu 20.04 теперь не играет никакой роли, лишь бы был доступ к ней через интернет и установлен и настроен XRDP.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Создание терминального сервера RDP с Ubuntu Linux

Ваш браузер не поддерживает JavaScript. В результате ваши впечатления от просмотра будут уменьшены, и вы будете переведены в режим только для чтения .

Загрузите браузер, поддерживающий JavaScript, или включите его, если он отключен (например, NoScript).

Эта тема была удалена. Его могут видеть только пользователи с правами управления темами.

  • org/Comment»>

    Если вы когда-нибудь пытались построить многопользовательский терминальный сервер с Linux, и я использую Ubuntu в этом примере, вы знаете, что это может быть немного мучительно. Ну, в этом нет необходимости, потому что ребята из C-Nergy в Бельгии создали скрипт установки и настройки xRDP, который не просто дает вам работающую установку XRDP, но и настраивает его как работающий терминальный сервер (многопользовательский). среда прямо из коробки.

    Вы можете скачать последние версии скриптов здесь.

    А вот их сообщение в блоге о простой установке XRDP в Ubuntu 16.04, 18.04, 19.04 и 19.10 xrdp-install 1.1.

    С помощью этого скрипта вы можете получить полностью работающий терминальный сервер Ubuntu за считанные минуты. А поскольку он использует RDP, вы получаете отличную производительность и совместимость на всех платформах без необходимости использования специализированных инструментов.

    Если вы используете настольные компьютеры на базе Linux в качестве клиентов доступа, я рекомендую клиентский инструмент Remmina RDP, это бомба.

    Некоторые ключевые ограничения… этот сценарий позволяет вам иметь только один вход в систему для каждого пользователя (поэтому выйдите из консоли, прежде чем пытаться получить к ней доступ с помощью своей учетной записи для тестирования), был протестирован только на нескольких версиях Ubuntu. (но текущая и LTS как обновленная, так и предыдущая, по крайней мере, одна версия поддерживаются и тестируются) и использует только среду на основе Gnome по умолчанию.

    При установке по умолчанию я обнаружил проблему с правами доступа к файлу ключа TLS. Вам просто нужно применить приведенные здесь инструкции, и вы отправитесь в гонки.

  • Я полагаю, для этих сред GNOME это работает только с Xorg?

  • org/Comment»>

    Это то, чем я пользуюсь некоторое время. Это отлично работает только для меня.

    @black3dynamite — да, только Xorg, насколько я знаю.

  • @scottalanmiller сказал в Создание терминального сервера RDP с Ubuntu Linux:

    Я рекомендую клиентский инструмент Remmina RDP, это просто бомба.

    Я люблю Remmina как клиента.

Установка — Linux Terminal Server Project

Все команды терминала в документации должны выполняться от имени пользователя root, что
означает, что вы должны сначала запустить sudo -i в Ubuntu или su - в Debian.

Установка серверной ОС

Сервер LTSP может быть безголовым, но обычно лучше установить
операционная система, использующая «настольный» . iso, а не «серверный». Весь рабочий стол
среды должны работать нормально, но больше всего тестируется MATE. Любой
Дистрибутив на основе .deb, использующий systemd, должен работать; то есть из Ubuntu Xenial
и Debian Jessie и далее. Если вы выберете Ubuntu, вы также можете рассмотреть
удаление оснастки, чтобы избежать некоторых проблем.

Добавление LTSP PPA

LTSP PPA — это место, где публикуются стабильные исходные версии LTSP. Его
обязательно для дистрибутивов до 2020 года, которые имеют более старый LTSP5, и необязательно
но рекомендуется иметь в новых дистрибутивах. Следите за ппа
страницу, чтобы добавить его в свои источники, а затем продолжить чтение здесь.

Установка пакетов сервера LTSP

Обычный способ преобразовать обычную установку в сервер LTSP — запустить:

 apt install --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes
gpasswd - администратор епопт
 

Замените администратора на имя пользователя администратора.
Если вы не используете PPA, также замените ltsp-binaries на ipxe .
Описание вышеупомянутых пакетов:

  • ltsp: содержит код LTSP, общий как для серверов LTSP, так и для LTSP.
    клиенты.
  • ltsp-binaries: содержит двоичные файлы iPXE и ​​memtest.
  • dnsmasq: предоставляет услуги TFTP и дополнительно (прокси) DHCP и DNS. Возможный
    альтернативами являются isc-dhcp-server и tftpd-hpa, но это может сделать только dnsmasq.
    proxyDHCP, поэтому рекомендуется по умолчанию.
  • nfs-kernel-server: экспортирует образ виртуального клиентского диска через NFS.
  • openssh-server: позволяет клиентам проходить аутентификацию и получать доступ к /home через SSHFS.
  • ethtool, net-tools: разрешить отключение управления потоком Ethernet для улучшения работы LAN
    скорость, когда сервер гигабитный, а некоторые клиенты 100 Мбит/с.
  • эпоптов: необязательно; позволяет контролировать клиента и
    Дистанционное управление; команда gpasswd позволяет системному администратору запускать epoptes.

Все эти пакеты также могут отображаться с помощью 9Предлагает .

Конфигурация сети

Существует два популярных метода настройки сети LTSP. Один из них – избегать любых
конфигурация; обычно это означает, что у вас есть один сетевой адаптер на сервере LTSP.
и внешний DHCP-сервер, например маршрутизатор, pfsense или Windows
сервер. В этом случае выполните следующую команду:

 лтсп днсмаск
 

Другим методом является наличие сервера LTSP с двумя сетевыми картами, где одна сетевая карта подключена к
обычная сеть, где есть Интернет, а другая сетевая карта подключена к
отдельный коммутатор только с клиентами LTSP. Чтобы этот метод работал
автоматически, назначьте статический IP-адрес 192.168.67.1 к внутренней сетевой карте, используя
Network Manager или что-то еще, что есть в вашем дистрибутиве, и запустите:

 ltsp dnsmasq --proxy-dhcp=0
 

Вы можете прочитать о дополнительных параметрах ltsp dnsmasq , таких как —dns или —dns-servers, в
его справочная страница.

Ведение образа клиента

LTSP поддерживает три метода сохранения образа клиента. Они задокументированы в
образ ltsp
справочная страница. Вы можете использовать либо один, либо все из них. Короче говоря, они:

  • Chrootless (ранее pnp): используйте корень сервера (/) в качестве шаблона для
    клиенты. Это самый простой метод, если он соответствует вашим потребностям, так как вы поддерживаете только
    одна операционная система, а не две (сервер и образ).
  • Необработанный образ виртуальной машины: графически поддерживать, например. виртуальная машина VirtualBox.
  • Chroot: поддерживать chroot вручную
    каталог с помощью консольных команд.

В случаях виртуальной машины и chroot вы должны установить ltsp
пакет в образ, добавив LTSP PPA и запустив apt install
--install-recommends ltsp epoptes-client
без указания каких-либо других
услуги. В случаях без chroot и виртуальной машины, если вы используете отдельные
разделы для некоторых каталогов, таких как /boot или /var, см. ltsp изображение мужчина
раздел ПРИМЕРЫ страницы о том, как включить
их. Когда образ будет готов, экспортировать его в формат squashfs и сделать его
доступны для клиентов по NFS, выполните следующие команды.

Для без chroot:

 лтсп образ /
 

Виртуальные машины должны быть связаны символическими ссылками перед запуском образа ltsp :

 ln -s "/home/user/VirtualBox VMs/debian/debian-flat.vmdk" /srv/ltsp/debian.img
ltsp образ debian
 

Для chroot в /srv/ltsp/x86_32:

 ltsp-образ x86_32
 

Вам необходимо запускать эти команды каждый раз, когда вы устанавливаете новое программное обеспечение или обновления
в свое изображение и хотите экспортировать его обновленную версию.

Настройка iPXE

После создания исходного образа или создания дополнительных образов
выполните следующую команду, чтобы создать меню iPXE и ​​скопировать двоичные файлы iPXE.
в TFTP:

 лтсп ipxe
 

В LTSP5 использовался syslinux, но iPXE заменил его, так как он намного мощнее.