Аналог терминального сервера windows на linux

Сейчас я расскажу вам о том, как можно сэкономить немалое количество времени и денег на вашей IT-инфраструктуре. Как централизованно админить большое количество...

Сейчас я расскажу вам о том, как можно сэкономить немалое количество времени и денег на вашей IT-инфраструктуре.
Как централизованно админить большое количество linux рабочих станций не разводя при этом хаос в вашей экосистеме.
И так, что же такое LTSP?

LTSP — Это терминальное решение на Linux.
Говоря «терминальное», я в первую очередь имею в виду не подключение к удаленному рабочему столу как в Windows. Я подразумеваю гораздо более гибкую и продвинутую систему доставки ПО, конфигов, домашенего каталога, да и самой операционной системы на клиентские рабочие станции с вашего терминального сервера.

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

У LTSP есть несколько режимов работы:

  • тонкий клиент
  • толстый клиент

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

Принцип работы

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

Как я уже сказал, на терминальных станциях вполне может и не быть жесткого диска, а соответственно никакой операционной системы на них не установленно, вся загрузка происходит c LTSP-сервера прямо по сети.
На терминальном сервере у вас установлена система, в ней же и хранятся все данные пользователей, конфиги, и ПО.
Когда пользователь включает свой компьютер, у него загружается операционная система с терминально сервера, он может в нее войти, поработать, отключиться. При этом все данные всегда остаются на терминальном сервере.

Теперь о режимах работы:

  • тонкий клиент — Приложения выполняются на терминальном сервере и просто выводятся на дисплей терминального клиента.
  • толстый клиент — Приложения выполняются непосредственно на терминальном клиенте, а сервер просто предоставляет доступ к пользовательским файлам и программам.

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

Кроме того, режимы можно комбинировать и некоторые приложения можно заставлять работать иначе, чем все остальные. Например запускать «тяжелый» браузер с flash локально на клиентах, а офисные приложения запускать на самом сервере.

Плюсы и минусы

Давайте рассмотрим какие же плюсы мы имеем по сравнению со стандартными принципами построения ит инфраструктуры:

  • Централизованное управление — У вас есть одна единая конфигурация, которой вы управляете из одного места.
  • Резервирование и бэкапирование — Все пользовательские данные у вас хранятся на одном сервере, а соотвественно настроив резервирование этого сервера, вы никогда не потеряете пользовательские данные.
  • Экономия на компьютерах — Бездисковые терминальные станции стоят заметно дешевле, чем полноценные компьютеры.
  • Быстрое развертывание — Вам больше не нужно устанавливать ОС. Прикупив очередную пачку терминалов их можно смело втыкать в сеть, они сразу подтянут операционку с сервера и они будут полностью готовы к работе. Точно так же нерабочий терминал можно быстро заменить другим.
  • Независимость от рабочего места — Пользователи могут работать под своей учетной записью независимо с любого компьютера в сети, всегда будет подгружаться именно их личный профиль.
  • OpenSource — Прежде всего, LTSP — это открытый и свободный проект. Вам не надо покупать лицензии для его использования. Кроме того, вы всегда можете посмотреть исходники, в основе которых лежат обычные bash-скрипты.

Минусы:

  • Требуется непрерывное подключение LAN — терминальные станции грузятся и работают по сети, поэтому требуется стабильное проводное подключение к сети.
  • Зависимость от сервера — понятное дело, без сервера все терминальные клиенты становятся бесполезными и превращяются в тыкву.

Устройство

Первое, что мы должны знать, это компоненты из которых состоит сервер:

  • DHCP-сервер — используется для выдачи клиентам IP-адресов и информации о tftp-сервере и пути к загрузчику pxelinux. Вы так же можете использовать ваш собственный DHCP-сервер.
  • TFTP-сервер — отдает по tftp-протоколу загрузчик, ядро и главный конфиг lts.conf.
  • NBD-сервер — используется ядром для загрузки базовой системы по сети. Так же, при желании, может быть заменен на NFS
  • SSH-сервер — используется для авторизации пользователей и передачи их домашних каталогов на терминальные станции.

Во вторых разберемся в том как он работает:

Когда вы установите на ваш сервер пакет ltsp-server-standalone, вы, к полностью настроенным сервисам, получите еще несколько ltsp-скриптов:

  • ltsp-build-client — собирает для нас образ системы, который мы будем отдавать на клиентские машины.
  • ltsp-chroot — chroot’ит нас в клиентскую систему, например для установки дополнительных пакетов и изменения конфигов.
  • ltsp-config — генерит дефолтные конфиги для LTSP.
  • ltsp-info — выводит информацию о текущей установке.
  • ltsp-update-image — обновляет nbd-образ базовой системы.
  • ltsp-update-kernels — копирует ядро и загрузчик из клиентского образа, в директорию tftp-сервера
  • ltsp-update-sshkeys — добавляет ssh publickey вашего сервера, в known_hosts клиентского образа.

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

Как устроена загрузка по сети?

Так же предельно важно понимать как устроена загрузка по сети, процесс загрузки выглядит примерно следующим образом:

  • Рабочая станция включается и опрашивает DHCP-сервер, как ей грузиться дальше:
    А точнее происходит запрос двух опций: next server — адрес TFTP-сервера и boot file — путь к загрузчику.
  • DHCP-сервер, выдает ответ с адресом сервера и путем к pxelinux.
  • Рабочая станция загружает загрузчик pxelinux по TFTP
  • pxelinux загружает ядро.
    В конфиге pxelinux в опциях ядра указанно откуда грузить основную систему по NBD
  • Когда ядро запускается, оно маунтит с сервера nbd-образ в корень системы и загружает процесс init, который в свою очередь и загружает все остальное обычным способом.
  • Так же в этот момент ltsp-читает главный конфиг lts.conf с сервера и запускает LDM, после чего пользователь видит приглашение к вводу логина и пароля.

LDM — это логон менеджер LXDE, который отвечает за авторизацию пользователей и начальный запуск окружения.

Скриншот окна входа

image

Когда пользователь логинится проиходит следующее:

  • В случае тонкого клиента, LDM заходит с введенным логином и паролем на ваш сервер по SSH,, если успешно, загружает окружение с сервера простым пробросом X’ов.
  • В случае толстого клиента, LDM пытается подключиться с введенным логином и паролем к вашему серверу, если успешно, то маунтит домашний каталог пользователя с сервера на клиент посредством sshfs, затем запускает окружение.

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

Установка

Я опишу установку LTSP в режиме толстого клиента, как наиболее сложную и интересную.
Настройка в режиме тонкого клиента мало чем будет оличаться, за исключением того, что необходимое ПО вам придется устанавливать не в chroot, а в основную систему, и после этого вам не нужно будет пересобирать nbd-образ.

Маленькая оговорочка, для сервера лучше брать дистрибутивы посвежее, т.к. LTSP находится среди стандартных пакетов и обновляется вместе с дистрибутивом. Для гостевой ос лучше брать проверненную Ubuntu 14.04 LTS, т.к. если брать дистрибутив посвежее, потом начнутся проблемы, то загрузчик не станавливается, из-за переименования пакетов, то еще что.

UPD: Проверенно, с последней Ubuntu 16.04 LTS таких проблем не возникает.

Итак, приступим. Сначала устанавливаем ltsp-server-standalone:

apt-get update && apt-get install ltsp-server-standalone

Теперь с помощью ltsp-build-client мы установим клиентскую систему. LTSP поддерживает различные DE, но больше всего мне понравилось как работает LXDE. В отличии от Unity он потребляет совсем мало ресурсов и так-как работает на голых иксах, он почти полностью конфигурируется с помощью переменных среды, это очень удобно, так-как их можно указать в главном конфиге lts.conf.

ltsp-build-client --dist xenial --arch i386 --fat-client-desktop lubuntu-desktop

Все эти опции можно указать в конфиге /etc/ltsp/ltsp-build-client.conf, что бы не прописывать их вручную:

ltsp-build-client.conf

# Distribution
DIST=xenial
# The chroot architecture.
ARCH=i386

# ubuntu-desktop and edubuntu-desktop are tested.
# If you test with [k|x]ubuntu-desktop, edit this page and mention if it worked OK.
# kubuntu lucid (10.10) working okay.
FAT_CLIENT_DESKTOPS="lubuntu-desktop"

# Space separated list of programs to install.
# The java plugin installation contained in ubuntu-restricted-extras
# needs some special care, so let's use it as an example.
#LATE_PACKAGES="
#    ubuntu-restricted-extras
#    gimp
#    nfs-client
#"

# This is needed to answer "yes" to the Java EULA.
# We'll create that file in the next step.
DEBCONF_SEEDS="/etc/ltsp/debconf.seeds"

# This uses the server apt cache to speed up downloading.
# This locks the servers dpkg, so you can't use apt on
# the server while building the chroot.
MOUNT_PACKAGE_DIR="/var/cache/apt/archives/"

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

После запуска комманды, у вас в полностью автоматическом режиме, с помощью debootstrap, развернется система в каталог /opt/ltsp/i386.

Эта же система и будет использоваться в дальнейшем всеми командами LTSP, в нее будет устанавливаться дополнительное ПО, из нее будут генериться загрузчик с ядром и nbd-образ системы. В принципе, ее, так же можно отдавать по nfs при должной настройке загрузчика.
После установки LTSP автоматически сгенерит из нее nbd-образ. Этот образ и будут загружить наши клиенты.

Для того, чтобы внести какие-нибудь изменения в гостевую ОС, например устанавливать дополнительное ПО, используется команда ltsp-chroot.
Если вы хотите что-то поменять или добавить в гостевую систему, выполните ltsp-choot и вы окажетесь внутри нее.
Затем произведите нужные вам действия, и выйдите командой exit.
Чтобы изменения применились, нужно перегенерить nbd-образ командой ltsp-update-image

DHCP-сервер:

Вместе с метапакетом ltsp-server-standalone у нас установился и isc-dhcp-server.
В принципе он уже из коробки работает как надо, но при желании вы можете поправить его конфиг /etc/default/isc-dhcp-server.
Есть классная статья на OpenNet от 2010 года на тему настройки LTSP, там неплохо описана процедура настройки DHCP-сервера.

Но, так как я предполагаю, что у вас уже есть DHCP-сервер, предлагаю настроить его.

Удалим isc-dhcp-server:

sudo apt-get remove isc-dhcp-server

Теперь вам нужно добавить к вашему dhcp-серверу 2 опции:

next-server 192.168.1.2; # TFTP-сервер
filename "/ltsp/i386/pxelinux.0"; # Загрузчик

Как это сделать, смотрите инструкции к вашему DHCP-серверу.
Вот, например инструкция как это сделать на оборудовании Mikrotik.

Установка ПО

  • Давайте же войдем в нашу гостевую систему:

    ltsp-chroot

  • Теперь установим vim:

    apt-get update && apt-get install vim

  • Поддержку русского языка:

    apt-get update && apt-get install `check-language-support -l ru`

  • Последнюю версию Remmina:

    apt-add-repository ppa:remmina-ppa-team/remmina-next
    apt-get update
    apt-get install remmina remmina-plugin-rdp libfreerdp-plugins-standard

  • Skype:

    add-apt-repository -y "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
    apt-get -y update
    apt-get -y install skype

  • Браузер Chromium c плагином PepperFlash (свежий flash от google)

    sudo apt-get install chromium-browser
    sudo apt-get install pepperflashplugin-nonfree
    sudo update-pepperflashplugin-nonfree --install

  • Кстати, PepperFlash можно установить и запустить без Chromium, в Firefox:

Установка PepperFlash для Firefox

add-apt-repository -y ppa:skunk/pepper-flash
add-apt-repository -y ppa:nilarimogard/webupd8
apt-get -y update
apt-get -y install pepflashplugin-installer freshplayerplugin
mkdir -p /opt/google/chrome/PepperFlash
ln -s /usr/lib/pepflashplugin-installer/libpepflashplayer.so /opt/google/chrome/PepperFlash

  • Чтобы администратор мог удаленно подключиться к сессии пользователя установим x11vnc:

Установка x11vnc

# Скачиваем пакет
apt-get -y install x11vnc

# Создаем скрипт запуска
cat > /usr/bin/x11vncd <<EOT
#!/bin/bash
x11vncd () {
     XAUTH=`ls -1td /var/run/ldm-xauth-* | head -n1 | sed 's|$|/Xauthority|'`
     logger -f /var/log/x11vnc "Starting with $XAUTH"
     /usr/bin/x11vnc -display :7 -rfbauth /etc/x11vnc.pass -logfile /var/log/x11vnc -xauth $XAUTH 
     sleep 1
     x11vncd
}
x11vncd
EOT

# Создаем init-скрипт
cat > /etc/init.d/x11vnc <<EOT
#!/bin/sh

### BEGIN INIT INFO
# Provides:x11vnc
# Required-Start:$remote_fs $syslog
# Required-Stop:$remote_fs $syslog
# Default-Start:2 3 4 5
# Default-Stop:0 1 6
# Short-Description:Start X11VNC
# Description:Start VNC server X11VNC at boot
### END INIT INFO

case "$1" in
        start) 
                start-stop-daemon --start --oknodo --pidfile /var/run/x11vnc.pid --background --nicelevel 15 --make-pidfile --exec /usr/bin/x11vncd
        ;;
        stop)  
                logger -f /var/log/x11vnc "Stopping"
                start-stop-daemon --stop --oknodo --pidfile /var/run/x11vnc.pid
        ;;
        restart)
                logger -f /var/log/x11vnc "Restarting"
                $0 stop
                $0 start
        ;;
        status)
                PID=`cat /var/run/x11vnc.pid`
                if [ -e /proc/$PID ]; then
                        echo "Process $PID is running"
                else   
                        echo "No process matching"
                fi
        ;;
        *)
                echo "Usage: $0 start|stop|restart|status"
                exit 1
        ;;
esac
exit 0
EOT

# Разрешаем выполнение
chmod +x /usr/bin/x11vncd /etc/init.d/x11vnc
# Включаем службу при запуске
update-rc.d x11vnc defaults
# Задаем пароль
x11vnc -storepasswd /etc/x11vnc.pass

  • И ssh-сервер:

    apt-get -y install openssh-server

  • Еще в Ubuntu 16.04 есть некая проблема, если не настроить xscreensaver, то через определенное время клиент покажет черный экран, из которого никак не выйти. Исправим это:

    Установим xscreenasver, если он еще не установлен:

    apt-get -y install xscreensaver

    Настроим автозапуск:

    cat > /etc/xdg/autostart/xscreensaver.desktop <<EOT
    [Desktop Entry]
    Type=Application
    Exec=/usr/bin/xscreensaver -nosplash
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name[en_US]=xscreenasaver
    Name=xscreensaver
    Comment[en_US]=
    Comment=
    EOT

    Если вы намерены блокировать экран с вводом пароля, не забудьте добавить следующую строку в ваш конфиг lts.conf:

    LDM_PASSWORD_HASH=true

Не забываем выйти из chroot и обновить наш nbd-образ:

exit
ltsp-update-image

Создание пользователей

  • Обычных пользователей терминального сервера можно создать стандартным способом:

    useradd -m -c "Иван Иваныч" -g users -s /bin/bash <username>
    passwd <username>

    Или через GUI если он установлен у вас на сервере

  • Также при желании можно создать локального администратора в клиентском образе:

    ltsp-chroot
    useradd -g adm -G sudo -s /bin/bash -m <adminname>
    passwd <adminname>
    exit
    ltsp-update-image

Конфиг lts.conf

Вот мы и подобрались к самому главному конфигу
Находится он по адресу /var/lib/tftpboot/ltsp/i386/lts.conf и представляет ссобой нечто иное как описание глобальных переменных.

Конфиг поделен на секции, в секции Default описываются настройки общие для всех клиентов:

[Default]
# Сессия LXDE
LDM_XSESSION    = /usr/bin/dbus-launch --exit-with-session /usr/bin/lxsession -s Lubuntu -e LXDE
# Настройки локалей и системного языка
LOCALE          = Europe/Moscow
LC_ALL      = ru_RU.UTF-8
LANG        = ru_RU.UTF-8
LDM_LANGUAGE    = ru_RU.UTF_8
# Настройка переключения клавиатуры и хоткеев
XKBLAYOUT       = "us,ru"
XKBOPTIONS      = "grp:ctrl_shift_toggle,terminate:ctrl_alt_bksp"
X_NUMLOCK       = true
KEYTABLE    = ru
LDM_NUMLOCK     = true
# Разрешаем флешки
HOTPLUG     = True
# Разрешаем локальные диски
LOCALDEV        = true
# Настраиваем звук и микрофон
SOUND       = True
MIC_VOLUME      = 0
CAPTURE_VOLUME  = 100
CAPTURE_SWITCH  = toggle
# Включаем поддержку SSH
RCFILE_01       = "ssh-keygen -A ; /usr/sbin/sshd"
# Настраиваем сбор логов
SYSLOG_HOST     = server

Также можно добавить секции для отдельных клиентов, на основе hostname, IP или MAC-адреса:

# Настройка графики
[oldmachine]
X_COLOR_DEPTH=8
X_MODE_0=800x600

# Включить автологин
[192.168.1.123]
LDM_AUTOLOGIN = True
LDM_USERNAME  = user
LDM_PASSWORD  = password

# Принт-сервер
[00:11:25:93:CF:00]
PRINTER_0_DEVICE=/dev/usblp0
SCREEN_07=shell

# FreeRDP, вместо стандартной оболочки
[00:11:25:93:CС:11]
SCREEN_07=xfreerdp
RDP_SERVER=192.168.100.10
RDP_OPTIONS="/f /sec:rdp /cert-ignore /multimon:force"

Вообще полный список опций вы можете найти на этой странице, или в

man lts.conf

Итоги

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

К тому же, благодаря свободной лицензии все это достается вам абсолютно бесплатно.

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

UPD: widestream в комментариях отписал, что успешно использует похожую схему для создания рендер-фермы.

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

Несколько интересных ссылок:

  • LTSP.org — Официальный сайт проекта.
  • UbuntuLTSP — Страничка на Ubuntu Wiki.
  • LTSP-Cluster. — Проект по созданию кластера на LTSP (для больших установок).
  • Raspi-LTSP — Интересный проект, который позволяет использовать Raspberry Pi в качестве терминальных станций.

Русскоговорящее сообщество

Если у вас возникнут какие-нибудь вопросы присоединяйтесь к нашей группе в телеграмме:
https://t.me/ltsp_ru

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

Заинтересовало ли вас это решение?


80.64%
Заинтересовало.
304


9.28%
Заинтересовало, будем внедрять.
35


10.08%
Не заинтересовало.
38

Проголосовали 377 пользователей.

Воздержались 54 пользователя.

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

Используете ли вы тонкие клиенты (терминальные станции)?


32.77%
Используем, с другим решением.
117


7.84%
Используем, с LTSP.
28


12.04%
Теперь будем :)
43


5.88%
Используем с другим решением, думаем перейти на LTSP
21

Проголосовали 357 пользователей.

Воздержались 86 пользователей.

Что делать, если нужно получить удалённый доступ к серверу или десктопу Linux? Или подключиться к Windows-машине с Linux-десктопа? Какие клиенты RDP и FTP подходят лучше всего под Debian и Red Hat / CentOS? Интересно посмотреть, что нового появилось в последнее время.

Как известно, Remote Desktop Protocol (RDP) — проприетарный протокол Microsoft для удалённого управления десктопом. Ориентирован на передачу по сети графического интерфейса и всех функций управления.

Хотя протокол выпустила Microsoft, к настоящему моменту создано множество свободных серверов и клиентов RDP с открытым исходным кодом, под свободной лицензией и для всех операционных систем. В последние годы появились достойные серверы RDP под Linux, хотя раньше хосты всегда работали под Windows, а под Linux выпускались только клиенты. Однако к 2022 году ситуация сильно изменилась, так что стали возможно и противоположные сценарии.

Выбор сервера и клиента зависит от операционной системы хоста. RDP-сессия устанавливается между клиентом и сервером. Соответственно, для серверной и клиентской части RDP и FTP существуют разные инструменты, в том числе доступные в репозиториях Debian, Red Hat, CentOS и др.

Сервер RDP под Linux

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

▍ xRDP

Неплохой вариант для Linux-сервера — xRDP. Последняя версия 0.9.20 вышла 15 сентября 2022 года.

Эта программа специализируется на управлении Linux-десктопом по RDP, при этом xRDP как бы мимикрирует под Windows-систему, нативную для данного протокола.

Предполагается, что клиенты — это обычно системы под Windows, мобильные устройства или дешёвые RDP-терминалы типа Wyse Winterm (на Windows CE), которые можно дёшево купить б/у на «Авито» или найти списанные вообще бесплатно.


Старый терминал WYSE-530 Winterm S30 на процессоре AMD Geode 366 МГц (ноябрь 2008)

Поднимаете RDP-сервер под Linux с десятком X-сессий — и практически без усилий получаете сеть из десятка компьютеров, которые могут вводить информацию на сервер. Это просто пример, как использовать RDP-клиенты под Windows для доступа к Linux-серверу.

xRDP обеспечивает удалённый доступ по Microsoft Remote Desktop Protocol (RDP) и принимает соединения по порту 3389/tcp от следующих RDP-клиентов:

  • FreeRDP.
  • rdesktop.
  • KRDC.
  • NeutrinoRDP.
  • Windows MSTSC (Microsoft Terminal Services Client, она же mstsc.exe).
  • Microsoft Remote Desktop (есть Microsoft Store, отличается от MSTSC).

Некоторые из этих клиентов доступны только на определённых ОС, например, только на Windows. Другие поддерживают более широкий список платформ, включая Linux, MacOS, iOS и/или Android.

xRDP поддерживает повторные подключения к прерванной сессии, изменение размера дисплея, функцию RDP/VNC-прокси (подключение к другому серверу RDP/VNC через xrdp), двусторонний буфер обмена между хостом и клиентом, в том числе передачу через него туда и обратно текста, изображений и файлов, перенаправление аудиопотока и микрофона (требует сборки дополнительных модулей), перенаправление дисков (монтирование локальных клиентских дисков на удалённой машине).

В большинство популярных дистрибутивов включены последние версии пакетов xrdp и xorgxrdp, они есть также в Debian и CentOS.

▍ Установка на Ubuntu / Debian

apt install xrdp

▍ Установка на RedHat / CentOS / Fedora

На RedHat / CentOS сначала нужно активировать пакеты EPEL:

yum install epel-release

Потом можно установить xrdp

yum install xrdp

ogon

Один из многочисленных альтернативных вариантов сервера RDP под Linux — проект ogon. Это набор инструментов на C/C++, которые предоставляют удобный GUI для удалённого десктопа по RDP. Проект поддерживает большинство современных расширений протокола RDP, кодеки сжатия растровых изображений, отключение и повторное подключение к сессиям, перенаправление устройств.

Сервер совместим практически со всеми существующими клиентами RDP, сессии можно устанавливать через приложение X11, Weston или QT. Благодаря модульной конструкции, сервер легко расширяется, в него можно добавить новые функции или новые бэкенды. Ставится на Debian, CentOS и т. д.

xpra

Известный сервер под Linux с терминальными GUI-сессиями (экран для X11) — xpra. Во многом работает как xRDP, хотя и не поддерживает RDP. Но мы решили помянуть его здесь для сравнения с решениями на RDP и VNC.

Тут встроенный HTML5-клиент, аппаратное ускорение графики, поддержка множества пользователей, GUI для настройки, синхронизация клавиатуры и буфера обмена, перенаправление принтера, курсора, звука, системных уведомлений, поддержка IPv6, SSL, десктопный режим и проч.

Официальные стабильные сборки:

  • Microsoft Windows: EXE, ZIP, MSI
  • MacOS: DMG, PKG
  • Linux: RPM, DEB

Клиенты RDP и FTP под Linux

Пожалуй, лучшие клиенты RDP под Debian — это Remmina и Apache Guacamole, хотя есть и другие варианты.

Remmina

Remmina — клиент RDP по умолчанию в некоторых дистрибутивах, в том числе в Ubuntu. Это одна из самых удобных и функциональных программ для удалённой работы, поддерживает RDP, SSH, SPICE, VNC, X2Go, HTTP/HTTPS.

В июне 2022 вышла последняя версия 1.4.27 с исправлением ошибок и рядом не самых существенных изменений вроде новых цветовых схем для SSH.

Некоторые из основных функций Remmina, которые можно настраивать на стороне клиента RDP:

  • Запоминание последнего режима просмотра для каждого соединения.
  • Конфигурация двойным щелчком.
  • Качество масштабирования.
  • Размер шага автоматической прокрутки.
  • Максимальное количество последних элементов.
  • Нажатия клавиш.
  • Папка для скриншотов.
  • Предотвращение попадания скриншотов в буфер обмена.
  • Настройка разрешения экрана.
  • Конфигурация вкладок.
  • Видимость панели инструментов.
  • Режим просмотра по умолчанию.
  • Настройка поведения в полноэкранном режиме.
  • Строка поиска в главном окне.
  • Установка горячих клавиш для хоста: включение полноэкранного режима, автоподгонка окна, переключение страниц вкладок, переключение режима масштабирования, захват клавиатуры, минимизировать окно, показать/скрыть панель инструментов, сделать скриншот, режим просмотра.
  • Локальный порт SSH-туннеля.
  • Парсинг ~/.ssh/config.
  • Логи SSH.
  • Выбор шрифта терминала.
  • И др.

В наборе плагинов есть SFTP для защищённой передачи файлов.

Из специфических настроек RDP — установка глубины цвета, качества передачи видео и звука, редирект локального микрофона, подключение консоли, распознавание сервера через Remote Desktop Gateway, возможность отключить автоматические реконнекты, синхронизацию буфера обмена и некоторых других функций.

Remmina входит в состав большинства популярных дистрибутивов, включая Debian 11:

В старых версиях Debian для установки Remmina можно скопировать строки в консоль:

echo 'deb http://ftp.debian.org/debian stretch-backports main' | sudo tee --append /etc/apt/sources.list.d/stretch-backports.list >> /dev/null
sudo apt update
sudo apt install -t stretch-backports remmina remmina-plugin-rdp remmina-plugin-secret remmina-plugin-spice

Сразу после установки предлагается сделать Remmina клиентом RDP по умолчанию:

Инструкции по установке для всех систем см. на этой странице, а руководство по сборке из исходников — в справочном вики.

На CentOS есть вариант установки из репозитория EPEL, вставив в консоль следующие строчки:

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm

В качестве альтернативы — Remmina устанавливается через универсальный пакет Flatpak, который работает буквально на всех дистрибутивах:

flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# In order to have H.264 codecs
flatpak install org.freedesktop.Platform
flatpak install org.freedesktop.Platform.openh264
flatpak install --user flathub org.remmina.Remmina
flatpak run --user org.remmina.Remmina

Apache Guacamole

Apache Guacamole (HTML5, в браузере) предоставляет доступ к хосту без клиента, то есть без инсталляции на компьютер клиентской части. Работает просто через браузер. Последняя версия 1.4.0 вышла 1 января 2022 года.

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

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


Из других RDP и VNC-клиентов под Linux можно упомянуть Vinagre, Boxes, TightVNC (для доступа к Windows-хостам), FreeRDP (xfreerdp/wlfreerdp, пакет для Debian) и rdesktop.

Telegram-канал и уютный чат

RDP (Remote Desktop Protocol) — протокол доступа к удаленному рабочему столу, созданный Microsoft. Он поддерживается почти любой современной ОС. В этой статье предлагаем взглянуть на несколько популярных клиентов удаленного доступа для Linux.

Проприетарный RDP — не единственный протокол удаленного доступа. Есть, например, открытый протокол VNC или защищенный протокол SSH. Все протоколы поддерживаются большинством операционных систем, включая различные дистрибутивы Linux, а иногда и мобильные ОС.

Клиенты доступа к удаленному рабочему столу имеют гораздо более широкие возможности, чем просмотр сессии удаленной машины с локальной. Через RDP клиент осуществляется доступ к удаленному рабочему столу с полноценной поддержкой клавиатуры, мыши, а также с поддержкой аудио и возможностью передачи файлов. В некоторых случаях RDP клиент может быть уже установлен в системе, например, на Ubuntu Desktop обычно предустанавливается клиент Remmina.

Популярные Linux RDP клиенты

Remmina

Remmina идет под лицензией GNU GPL и имеет открытый исходный код.

Установка Remmina

Remmina устанавливается через терминал:

sudo apt install remmina

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

Обновление Remmina

В терминале нужно ввести команду:

sudo apt-add-repository ppa:remmina-ppa-team/remmina-next

Затем запросите обновление списка системных хранилищ:

sudo apt-get update

Следующий шаг — установка или обновление плагина протокола RDP:

sudo apt-get install remmina remmina-plugin-rdp libfreerdp-plugins-standard

Чтобы завершить установку Remmina Linux RDP client, закройте активные сеансы приложения из терминала: sudo killall remmina. Затем откройте обновленный клиент заново и перейдите к конфигурации соединения.

Настройка Remmina

Если нужны настройки Remmina Remote Desktop Client, откройте меню Preferences (параметры) нажатием на иконку в правой верхней части окна.

Подключение по RDP к удаленной машине

Давайте рассмотрим как работает подключение по RDP к удаленной машине на примере Remmina.

Нажмите кнопку Add a new connection profile (Добавить новый профиль соединения), чтобы создать новое соединение.

Откроется окно.

Поддерживаются соединения с Linux, Windows или macOS. Главное, что вам нужно знать — это IP-адрес машины, с которой устанавливается подключение, имя пользователя и пароль.

После конфигурации нового подключения, можно просто нажать Connect для подключения, а можно сохранить подключение и установить его в качестве подключения по умолчанию. Сохранив текущую конфигурацию, вы сможете соединиться с удаленным компьютером буквально в два клика.

Также есть возможность управлять соединениями, копируя, редактируя и удаляя их прямо из основного окна.

Помимо RDP, клиент Remmina также обладает поддержкой других протоколов удаленного соединения, включая безопасный SSH и открытый VNC.

Apache Guacamole

Еще один интересный RDP клиент для Linux — Apache Guacamole. Этот RDP клиент с открытым исходным кодом, распространяется по лицензии Apache v. 2.0. У Apache Guacamole есть интересная особенность — разработчики называют его «шлюз для удаленного рабочего стола без клиента» (clientless remote desktop gateway). Все благодаря тому, что Apache Guacamole работает напрямую из браузера, необходимости устанавливать дополнительное ПО или плагины нет.

Установка Apache Guacamole

Apache Guacamole может быть предустановлен в некоторых Linux Debian и Debian-based дистрибутивах. Ручная установка Apache Guacamole из терминала производится командой:

sudo apt-get install guacamole-tomcat

Поскольку Apache Guacamole — серверный клиент, требуется установить Tomcat Server на вашу машину, после чего программа установки попросит его перезапустить.

По умолчанию Apache Guacamole устанавливается с поддержкой только протокола VNC. Чтобы иметь возможность подключаться по SSH или RDP, необходимо установить дополнительно клиент для желаемого протокола. Сделать это можно следующей командой:

apt-get install libguac-client-ssh0 libguac-client-rdp0

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

Настройка Apache Guacamole

После установки Apache Guacamole автоматически применяет минимально необходимые для запуска настройки. Основным файлом конфигурации Apache Guacamole является guacamole.properties.

Все подробности об установке, настройке и управлении Apache Guacamole детально описаны в руководстве на официальном сайте.

Клиент Apache Guacamole максимально прост в использовании. Для запуска шлюза доступа к удаленному рабочему столу без клиента требуется иметь только браузер с поддержкой HTML5. Сама работа показана в коротком видео.

FreeRDP

Еще один бесплатный RDP клиент для Linux — FreeRDP. FreeRDP имеет лицензию Apache и открытый исходный код. Его можно встретить включенным в некоторые дистрибутивы Linux.

Установка FreeRDP

Актуальную на момент написания статьи версию FreeRDP можно установить командой из терминала:

sudo apt install freerdp2-x11

Настройка FreeRDP

FreeRDP — терминальный клиент, поэтому все настройки для подключения вводятся одной командой:

xfreerdp -u username -p password -g 1280×1024 XXX.XXX.XXX.XXX

Синтаксис команды:

  • -u username — имя удаленного компьютера, к которому хотите подключиться;
  • -p password — пароль учетной записи;
  • -g 1280×1024 — разрешение экрана;
  • XXX.XXX.XXX.XXX — IP удаленного компьютера.

Полный синтаксис можно найти в интернете.

Чтобы не вводить команду заново каждый раз, вы можете создать ярлык подключения со всеми необходимыми параметрами. Для этого, после установки FreeRDP, откройте окно терминала, запустите редактор nano: sudo nano ~/rdp.sh. В появившемся окне введите следующие строки и сохраните файл:

#!/bin/bash
xfreerdp -u username -p password -g 1280×1024 XXX.XXX.XXX.XXX

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

TigerVNC

TigerVNC — это полностью бесплатный клиент, он имеет открытый исходный код. Он отличается от предыдущих клиентов удаленного доступа тем, что он работает только по протоколу VNC.

Установка TigerVNC

Для работы TigerVNC требуется окружение рабочего стола. Мы выбрали окружение Gnome, установили его следующими командами:

sudo apt install ubuntu-gnome-desktop
sudo systemctl enable gdm
sudo systemctl start gdm

Затем, чтобы установить компоненты TigerVNC, введите в окне терминала:

sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-xorg-extension tigervnc-viewer

Если установка прошла успешно, запустите VNC-сервер: vncserver. Создастся дефолтная конфигурация, а от вас потребуется задать пароль для TigerVNC длиной от 6 до 8 символов.

Настройка TigerVNC

Следующим шагом вы должны будете настроить рабочее окружение для работы с TigerVNC. Чтобы избежать конфликтов, следует приостановить активный VNC-сервер командой в терминале: vncserver -kill :1.

Затем введите команду vi ~/.vnc/xstartup, чтобы добавить файл xstartup в каталог конфигурации рабочего стола, откроется редактор.

В редакторе пропишите пять строк:

#!/bin/sh
exec /etc/vnc/xstartup
xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

Эти строки будут выполняться при каждом запуске TigerVNC сервера. Сохраните файл, задайте ему разрешения:

chmod 700 ~/.vnc/xstartup

Возобновите работу сервера, введя в терминале:

vncserver :1 -localhost -geometry 1280x1024 -depth 12

Синтаксис следующий:

  • :1 — номер дисплея;
  • -localhost — разрешить соединения только с локального хоста;
  • -geometry — разрешение экрана;
  • -depth — глубина цвета.

TigerVNC — быстрый клиент удаленного доступа к компьютеру, однако, его функционал ограничивается VNC протоколом, и его установка чуть более требовательна, чем у аналогов.

rdesktop

Следующий клиент — rdesktop — поддерживается на платформах Linux, Microsoft Windows, имеет открытый исходный код. Выгодно отличает rdesktop от других клиентов поддержка протокола RDP 4.0, используемого в версиях Windows NT 4.0 Terminal Server Edition и Windows 2000 Server.

Установка rdesktop

Рекомендуем сперва проверить наличие rdesktop в дистрибутиве. Если rdesktop уже включен в систему, то он запустится командой rdesktop. Если rdesktop в дистрибутиве отсутствует, то установить его можно командой:

sudo apt-get install rdesktop

Настройка rdesktop

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

rdesktop -z -P (-g/-f) 1280x1024 -u USER -p PASSWORD SERVER-ADDRESS

Команда использует следующий синтаксис:

  • -z — использовать сжатие потока;
  • -P — использовать кэширование;
  • -g/-f — оконный/полноэкранный режим;
  • -u — имя пользователя удаленной машины;
  • -p — пароль.для входа в учетную запись удаленного компьютера.

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

Если вы в поиске простого и надежного клиента, который поддерживал бы также функции RDP4, то rdesktop будет оптимальным выбором.

Vinagre

Vinagre входит в стандартное окружение Gnome и по сути является официальным RDP клиентом Gnome. Это значит, что клиент Vinagre уже должен быть включен в ваш дистрибутив Linux с окружением Gnome, и его установка не потребуется.

Установка Vinagre

Если по какой-то причине клиент Vinagre отсутствует у вас в системе, вы можете его инсталлировать, введя в консоли:

sudo apt-get install vinagre

Преимущества Vinagre это:

  • Возможность подключить несколько удаленных рабочих столов одновременно. Каждый из них будет отображаться на отдельных вкладках.
  • Поиск потенциальных подключений в локальной сети. Vinagre позволяет отслеживать доступные подключения.
  • Поддержка VNC и SSH.
  • Добавление подключений в избранное, наличие истории.
  • Поддержка Gnome Keyring.

Если вы работаете с Gnome, то вам стоит обратить внимание на Vinagre, ознакомиться с этим клиентом поближе.

NoMachine NX Client

Утилита NX Client, разрабатывается компанией NoMachine. Программа работает по проприетарному протоколу NX, который разработан компанией NoMachine. NoMachine NX Client доступен для Windows, Linux, macOS, Android, iOS, Raspberry Pi, а также из браузера.

Установка NoMachine NX Client

Вам потребуется скачать установщик в любом формате (RPM, DEB, TAR.GZ) открыть и установить его на обе машины — локальную и удаленную. То же можно сделать и командой из терминала, но иметь копию пакета установки все равно потребуется.

NoMachine NX Client обладает впечатляющим набором функций, который расширяется с каждым обновлением.

Но, во-первых, для корпоративных клиентов NoMachine продает свои продукты по подписке (44,50 долларов в год за сервер или пакет 10 пользователей, подробнее). Это совсем не выгодно отличает NX Client от рассмотренных ранее полностью бесплатных клиентов. Во-вторых, большое число функций и вкладок с различными настройками и параметрами может помешать сосредоточиться на работе. Кроме того, NoMachine NX Client не поддерживает открытие нескольких сеансов во вкладках — каждый новый сеанс нужно открыть в новом окно программы. Зато вся документация и справка на официальном сайте NoMachine переведена на русский.

NoMachine NX Client — хороший выбор, если ваши основные требования это:

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

Krdc

Krdc — бесплатный RDP клиент с открытым исходным кодом, идущий под лицензией GPL v.3. Krdc может работать по VNC и по RDP, клиент является официальным проектом окружения KDE для удаленного доступа.

Установка Krdc

Установить Krdc на дистрибутив Linux можно, введя в терминале:

sudo apt-get install krdc

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

Если у вас есть потребность в простом клиенте удаленного доступа, то Krdc отлично подойдет. Дополнительным плюсом будет возможность выбора протокола подключения: RDP или VNC, по умолчанию поддержка SSH в Krdc отсутствует.

TeamViewer

TeamViewer — широко известный клиент для удаленного доступа, он является бесплатным только для частного использования. Стоимость корпоративного решения от 2 до 7 тысяч рублей в месяц за одно рабочее место, подробности можно узнать на сайте TeamViewer.

Одно из преимуществ TeamViewer — кроссплатформенность. После установки приложение позволяет подключаться к удаленному рабочему столу с Linux, Windows, macOS, Android, iOS, Blackberry и даже ChromeOS.

Установка TeamViewer

Для установки TeamViewer разработчики рекомендуют скачать пакет установки с официального сайта, после чего установить его через графический интерфейс на обе машины — локальную и удаленную. Установить TeamViewer через терминал можно соответствующими командами для соответствующего пакета, например DEB:

apt install teamviewer_12.0.xxxxx_i386.deb

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

Заключение

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

Установим терминальный сервер XRDP на OC Debian. Настроим все основные требования для удобной работы с сервером для пользователей и администраторов. В последствии рассмотрим установку на сервер программу из семейства 1С Предприятие 8.

Содержание:

  • 1 Введение
  • 2 Неудачная попытка настройки XRDP на CentOS 7
  • 3 Предварительна подготовка
  • 4 Установка XRDP на Debian 10
  • 5 Настройка XRDP
    • 5.1 Двухсторонний буфер обмена XRDP
    • 5.2 Перезагрузка системы пользователем XRDP
    • 5.3 Одна сессия для пользователя XRDP
    • 5.4 Запрет авторизации ROOT
    • 5.5 Название подключенной локальной папки
    • 5.6 Сертификат при работе сервера XRDP
      • 5.6.1 Выпуск собственого сертификата для XRDP
    • 5.7 Настройка вида окна авторизации XRDP
    • 5.8 Отключение screensaver
  • 6 Настройка базового пользователя
    • 6.1 Раскладка клавиатуры в XFCE
      • 6.1.1 Решение проблемы с раскладкой клавиатуры
    • 6.2 Блокировка настроек XFCE пользователям
    • 6.3  Создание skel (скелета) для новых пользователей
  • 7 Управление пользователями Debian
    • 7.1 Добавление новых пользователей
    • 7.2 Изменении пароля пользователя
    • 7.3 Удаление пользователя
    • 7.4 Список пользователей
  • 8 Подключение локального диска на сервер терминалов
  • 9 Подключение с Windows
  • 10 Добавление принтеров
  • 11 Управление XRDP
  • 12 Просмотр активных пользователей XRDP
  • 13 Ротация логов xrdp
  • 14 Результат

Введение

Из статьи вы узнаете о том как настроить терминальный сервер на базе операционной системы Linux. Настраивать будем используя дистрибутив Debian 10 Buster.

Ранее в этой статье я расказывал как производится настройка на Debian 8 и 9 версии и какие нюансы настройки. В новой версии большенсово проблем прошлых версий исправлено, но появились новые с решением которых я с вами и поделюсь.

Совершенно нет желания захломлять ресурс старыми не актуальными статьями. XRDP он всегда один и лучше использовать его на новых стабильных версиях. При желании всегда можно мигрировать со старой версии Debian на новую. Например, я вполне успешно делаю обновления начиная с 7 версии.

Вариант с нелегальным переводом системы Windows в терминальный сервер используя патчи я сразу отбросил в сторону. Не занимаюсь воровством программ и не буду.

Требования для терминального сервера:

  • Работа буфера обмена в обоих направлениях,
  • Переключение раскладки клавиатуры на русский язык,
  • Работа пользователей по сертификату,
  • Монтирование сетевых ресурсов,
  • Подключение локальной папки на сервер,
  • Создание одной сессии для пользователя,
  • Подключение принтеров.

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

Графическую оболочку лучше использовать легковесную. Например, LXDE или XFCE. В моем примере рассматривается использование XFCE.

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

Если вам хочется почитать «Как скачать и установить Debian 10 Buster» вы можете это сделать на сайте который стал для меня отправной точкой в изучении Linux. Все статьи на этом ресурсе написаны понятным языком и проверены автором перед тем как выкладывать в сеть.

Неудачная попытка настройки XRDP на CentOS 7

В репозитории Epel присутствует свежая версия xrdp.x86_64 1:0.9.2-10.el7 что сразу порадовало. Установка проходит без проблем и все сразу работает после старта службы.

В CentOS, как я понял, работают в основном над своим рабочим окружением Gnomе и стараются поддерживать KDE. Для терминального сервера окружение Gnome и KDE тяжеловаты. Можно установить XFCE, LXDE или MATE но они в урезанном виде и пришлось поковыряться, чтобы настроить нужные элементы на панели не говоря уже о других неудобных моментах в настройке.

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

Предварительна подготовка

Для своего удобства я всегда устанавливаю файловый редактор vim и файловый менеджер mc. Установим выполнив команду:

apt install vim mc

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

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

Установка XRDP на Debian 10

К сожалению вы не сможете впоследствии установить на эту систему 1C:Предприятие по причине долгой задержки в поддержке этой версии от разработчиков. Команды и действия полностью эдентичны для установки на Debian 9.

Системные требования «1С:Предприятия 8»

Установка производится следующей командой:

apt install xrdp xorgxrdp

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

Для запуска X сервера (отображение экрана) существуют разные права доступа. По умолчанию запуск разрешен всем пользователям с доступом к консоли.

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

dpkg-reconfigure xserver-xorg-legacy

Xrdp настройка Xfce sevo44-1

Перезагружаем сервис:

service xrdp restart

Настройка новых правил применнена и можно подключатся по протоколу RDP используя новые параметры.

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

Скелет (Skel) позволит при добавлении нового пользователя скопировать все параметры настроенного пользователя.

Двухсторонний буфер обмена XRDP

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

Перезагрузка системы пользователем XRDP

Остановился на варианте когда простому пользователю для выполнения перезагрузки не надо указывать пароль root.

Будем использовать сервис PolicyKit. Все параметры разбиты на секции где есть описание на английском языке. Для применения политик в нужных параметрах указывается необходимое значение.

Откроем нужный файл и сделаем необходимые изминения:

vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
= часть вывода команды и необходимые изменения =
= вместо auth_admin_keep указываем yes =
<action id="org.freedesktop.login1.reboot">
<description gettext-domain="systemd">Reboot the system</description>
<message gettext-domain="systemd">Authentication is required for rebooting the system.</message>
                <defaults>
                        <allow_any>yes</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
<annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.set-wall-message</annotate>
</action>

Теперь при перезагрузке система не будет запрашивать пароль root.

Одна сессия для пользователя XRDP

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

Для настройки нам необходимо открыть файл и сделать там необходимые изменения:

vim /etc/xrdp/sesman.ini
= вывод части команды с необходимыми настройками =
[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10

;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
# Выставляем количество пользователей для одновременной работе на сервере 
MaxSessions=3

;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, kill session after 60 seconds
# Не разрываем сеанс при отключении пользователя чтобы потом попасть в туже сессию 
KillDisconnected=false

Запрет авторизации ROOT

По умолчанию разрешен вход под пользователем root. В целях безопасности отключим такую возможность:

vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Security]
# Авторизация root. true - разрешено false - запрещено
AllowRootLogin=false

Название подключенной локальной папки

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

vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Chansrv]
; drive redirection, defaults to xrdp_client if not set
# Название монтируемой папки
FuseMountName=Mount_FOLDER

Сертификат при работе сервера XRDP

По умолчанию система работает с сертификатами созданными при установке о чем свидетельствует информация в логе xrdp:

cat /var/log/xrdp.log
= необходимая информация =
[INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied

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

Для исправления ошибки выполним команду которая добавит учетную запись пользователя с именем xrdp в группу с именем ssl-cert.

adduser xrdp ssl-cert

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

Выпуск собственого сертификата для XRDP

Выпустим свой сертификат по команде указанном в файле настройки xrdp.  Изменим только действие сертификата с 1 года до 10 лет. Создадим папку, перейдем туда и запустим команду генерации ключа:

mkdir /etc/xrdp/certificate/
cd /etc/xrdp/certificate/
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650
= будут заданы вопросы на которые ответьте по аналогии =
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Kostroma
Locality Name (eg, city) []:Kostroma
Organization Name (eg, company) [Internet Widgits Pty Ltd]:sevo44
Organizational Unit Name (eg, section) []:sevo44
Common Name (e.g. server FQDN or YOUR name) []:Administrator
Email Address []:info@sevo44.ru

Отредактируем файл настройки:

vim /etc/xrdp/xrdp.ini
= часть кода с необходимые изменениями =
; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate
; minimum security level allowed for client
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high
; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
certificate=/etc/xrdp/certificate/cert.pem 
key_file=/etc/xrdp/certificate/key.pem
; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH

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

chown -R xrdp:xrdp /etc/xrdp/certificate/

После перезагрузки сервера и подключения к нему по XRDP cообщений больше в логе об использовании сертификатов по умолчанию нет и сервис работает с нашим сертификатом.

Настройка вида окна авторизации XRDP

Отредактируем параметры отвечающие за отображение формы авторизации пользователей. Отредактируем параметры в файле:

vim /etc/xrdp/xrdp.ini
= часть кода с необходимыми изменениями =

; Login Screen Window Title
ls_title=XRDP server 1C

; top level window background color in RGB format
# Фон
ls_top_window_bg_color=000000

; width and height of login screen
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename (bmp format).
#ls_background_image=

; logo
; full path to bmp-file or file in shared folder
# Свой логотип в формате bmp размера 240х140
ls_logo_filename=/etc/xrdp/logo_xrdp.bmp
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=60

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

= Оставляю сессию только Xorg а остальные коментирую =

;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

Результат моих изменений.

Авторизация XRDP от sevo44.ru

Перезагрузим сервис xrdp для применения всех сделанных настроек:

service xrdp restart

Отключение screensaver

Вначале хотел отключать его у пользователей но подумав решил удалить:

apt-get remove xscreensaver

В системе Debian 10 после базовой установки я не обнаружил пакета xscreensaver.

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

Xrdp настройка Xfce sevo44-9

Настройка базового пользователя

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

Раскладка клавиатуры в XFCE

С раскладками в XRDP приходилось возится больше всего. После добавления нового элемента «Раскладка клавиатуры» на панель и его настройки все работает как положено.

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

Что я только не перепробовал, куда только не писал рекомендованный код, по рекомендациям с разных статей но проблема эта никуда не уходила. Показать пользователю как каждый раз настраивать «Раскладка клавиатуры» не серьезно. Вариант есть дубовый но рабочий на 100 % и при любых обстоятельствах.

Добавил элемент на панель «Запуск приложения» указал там «Терминал Xfce» и внёс туда код:

setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

Обратите внимание на клавиши смены раскладки!

Разместил рядом с флагами поменяв иконку на понравившуюся мне. xrdp_lang_ru_sevo44

Теперь если переключение не работает тыкаем по кнопке и раскладка снова работает.

Решение проблемы с раскладкой клавиатуры

Мне на почту прислал решение Михаил с сайта admin1c.ru
Посл проверки с радостью делись с вами этим решением!

Необходимо в файле /etc/xrdp/xrdp_keyboard.ini добавить необходимый код и переключение работает прекрасна при любых вариантах работы с системой.

vim /etc/xrdp/xrdp_keyboard.ini
= необходимые проверки и дополнения =
В моем случае эти коды были, но лучше проверить их наличие
[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_ru=0x00000419

Всё что ниже добавляем в конце не забывая что переключение происходит сочетанием  клавиш alt+shift
[layouts_map_ru]
rdp_layout_us=ru,us
rdp_layout_ru=ru,us

[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

После перезагрузки XRDP проверяем результат.

service xrdp restart

Блокировка настроек XFCE пользователям

В статье выше мы разрешили простым пользователям перезагружать сервер без ввода пароля root. Cделаем запрет на редактирование системных настроек. В папке /etc/xdg/xfce4/xfconf лежат базовые настройки и по умолчанию они не работают так как работают настройки самого пользователя. Добавив параметр в эти файлы пользователь будет использовать именно их.

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

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

cp -v /home/настроенный пользователь/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/
= вывод команды =
«/home/настроенный пользователь/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml» -> «/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml»

Откроем и отредактируем файл указав запрет на изменения всем кроме пользователя local:

mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
= вывод команды с необходимыми изменениями =
<channel name="xfce4-panel" version="1.0" locked="*" unlocked="local">

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

Запрет на изменения настрое XFCE делается редактированием файла:

mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
= вывод команды с необходимыми изменениями =
<channel name="xsettings" version="1.0" locked="*" unlocked="local">

Настройки XFCE сделанные пользователем не будут применяться но никаких предупреждающих сообщений пользователь не увидит!

Мы настроили запрет на выключение пользователю но значки показываются и можно выполнить действие указав пароль root. Такой вариант решает проблему но захотелось сделать эти кнопки не активными.

Изменим вид панели пользователя. Создадим папку и необходимый файл с параметрами:

mkdir /etc/xdg/xfce4/kiosk
mcedit /etc/xdg/xfce4/kiosk/kioskrc
= вывод команды с необходимыми изменениями =
[xfce4-session]
# Указываем пользователей кто может перегрузить сервер или разрешение группе %root
Shutdown=root,sevo44

Обычно я в панели вывожу элемент «Системные действия» и там выбираю только «Перезагрузка» и «Завершение сеанса».

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

Для применения всех параметров перезагрузим сервер:

reboot

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

Xrdp настройка Xfce sevo44-1

У всех остальных будет такой вид.

Xrdp настройка Xfce sevo44-2

 Создание skel (скелета) для новых пользователей

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

Я использую настройки самой XFCE, рабочего стола и списка баз 1С:Предприятие. Выполним действия:

cd /home/Базовый пользователь
 cp -R -f -b .config/ /etc/skel/
 cp -R -f -b Рабочий стол/ /etc/skel/
# В случае использования 1С:Предприятие
 cp -R -f -b .1C/ /etc/skel/

Последняя строка кода скопирует настройку окна «Запуск 1С:Предприятие» в которой указываются параметры всех баз.

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

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

Управление пользователями Debian

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

Добавление новых пользователей

Добавление производится командой:

adduser user007
= вывод команды с информацией для заполнения =
Добавляется пользователь «user007» ...
Добавляется новая группа «user007» (1007) ...
Добавляется новый пользователь «user007» (1006) в группу «user007» ...
Создаётся домашний каталог «/home/user007» ...
Копирование файлов из «/etc/skel» ...
Введите новый пароль UNIX: 
Повторите ввод нового пароля UNIX: 
passwd: пароль успешно обновлён
Изменение информации о пользователе user007
Введите новое значение или нажмите ENTER для выбора значения по умолчанию
 Полное имя []: user007 
 Номер комнаты []: 
 Рабочий телефон []: 
 Домашний телефон []: 
 Другое []: 
Данная информация корректна? [Y/n] y

Изменении пароля пользователя

passwd user007
= вывод команды =
Введите новый пароль UNIX: 
Повторите ввод нового пароля UNIX: 
passwd: пароль успешно обновлён

Удаление пользователя

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

deluser --remove-home user007
= вывод команды =
Идёт поиск файлов для сохранения/удаления ...
Удаляются файлы ...
Удаляется пользователь «user007» ...
Предупреждение: в группе «user007» нет больше членов.
Готово.

Список пользователей

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

cat /etc/passwd
= часть вывода команды =
test:x:1001:1001:test,,,:/home/test:/bin/bash
sevo44:x:1002:1002:sevo44,,,:/home/sevo44:/bin/bash
usr1cv8:x:999:1003:1C Enterprise 8 server launcher:/home/usr1cv8:/bin/sh
geoclue:x:119:127::/var/lib/geoclue:/bin/false
davfs2:x:120:128::/var/cache/davfs2:/bin/false

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

Подключение локального диска на сервер терминалов

Подключение было проверено на стандартном клиенте Windows и программах LInux Remmina и KRDC. Монтирование и работа с локальным диском подключаемого клиента происходит без проблем.

В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку “Принтеры»

Подключение с Windows

При подключении c систем Windows на странице авторизации не получится переключить раскладку клавиатуры для требуемого языка ввода. В большинстве случаев по умолчанию стоит Русская раскладка а вводит надо на Английском.

Перед подключением с Windows необходимо вначале перейти на раскладку в которой вводится логин и пароль, как правило это EN.

Добавление принтеров

К принтерам у меня особое отношение. Эти аппараты вечно приносят кучу проблем и слава богу что все больше и больше их делают сетевыми что облегчает настройку. Настроить сетевой принтер не вызовет проблем даже у начинающего администратора. С usb принтерами придется повозится до получения бубна мастера по подключению принтера в системах Linux. Подключение  локального принтера используя программу RDP клиента у меня никогда не получалось а по словам опытных программистов работает коряво и не стабильно. Ладно еще если в одном офисе всё а если разные или вообще с дома хотят подключить принтер вообще жжжж….

Для меня есть два варианта решения проблемы для удаленных от офиса пользователей:

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

Управление XRDP

Управление службой стандартное для систем Debian.

service xrdp restart
service xrdp start
service xrdp stop
service xrdp status

Так выглядит статус после старта службы:

service xrdp status
● xrdp.service - xrdp daemon
 Loaded: loaded (/lib/systemd/system/xrdp.service; enabled)
 Active: active (running) since Вт 2017-05-23 15:05:32 MSK; 32s ago
 Docs: man:xrdp(8)
 man:xrdp.ini(5)
 Process: 759 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
 Process: 730 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
 Main PID: 949 (xrdp)
 CGroup: /system.slice/хrdp.service
 └─949 /usr/sbin/хrdp

май 23 15:05:31 хrdp systemd[1]: PID file /run/xrdp/xrdp.pid not readable (yet?) after start.
май 23 15:05:32 хrdp systemd[1]: Started xrdp daemon.
май 23 15:05:33 хrdp xrdp[949]: (949)(140156439295744)[INFO ] starting хrdp with pid 949
май 23 15:05:45 хrdp xrdp[949]: (949)(140156439295744)[INFO ] listening to port 3389 on 0.0.0.0

Просмотр активных пользователей XRDP

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

ps aux | grep xrdp | grep xorg
= вывод команды =
local      694  3.7  1.9 571540 76992 ?        Sl   22:47   0:29 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log

Вот мы видим что подключен только один пользователь с логином local и PID 694.

Просто снять этот процесс не достаточно, чтобы полностью завершить работу пользователя на сервере. Выведем список всех процессов сервиса XRDP:

ps aux | grep xrdp
= вывод команды =
root       447  0.0  0.0  13860  3640 ?        S    22:45   0:00 /usr/sbin/xrdp-sesman
xrdp       471  0.0  0.0  12248  2044 ?        S    22:45   0:00 /usr/sbin/xrdp
root       692  0.0  0.0  13616  2300 ?        S    22:47   0:00 /usr/sbin/xrdp-sesman
local      694  3.8  1.9 571540 76992 ?        Sl   22:47   0:36 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
local      697  0.0  0.0  99512  3412 ?        Sl   22:47   0:00 /usr/sbin/xrdp-chansrv
xrdp       903  4.1  0.6  40076 28176 ?        S    22:47   0:37 /usr/sbin/xrdp
root       982  0.0  0.0   6224   828 pts/0    S+   23:02   0:00 grep xrdp

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

pkill -9 -u local

Ротация логов xrdp

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

Откроем файл и добавим необходимые логи:

mcedit /etc/logrotate.d/rsyslog
=вывод команды с необходимыми дополнениями =
/var/log/syslog
{
 rotate 7
 daily
 missingok
 notifempty
 delaycompress
 compress
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
/var/log/хrdp-sesman.log
/var/log/хrdp.log
{
 rotate 4
 weekly
 missingok
 notifempty
 compress
 delaycompress
 sharedscripts
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

Результат

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

Вся эта статья была лишь прелюдия для того чтобы рассказать как можно используя Linux настроить легально и надежно стабильную работу сервера  «1С:Предприятие 8.3 на Linux» работающего с файловой базой. Минимальные вложения и максимальная производительность.

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

Альтернатива Windows Server Terminal или готовимся к
импортозамещению

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

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

Применение терминального сервера в организации позволит получить
следующие преимущества:

1.      
Сокращение затрат на приобретение мощного ПК
пользователя;

2.      
Возможность подключения к терминальному серверу из
дома или из удаленного филиала;

3.      
Повышение уровня безопасности;

4.      
Упрощение процесса поддержки пользователей;

5.      
Упрощение обновления программ и обслуживания
техники.

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

Таблица 1 Список
пользователей сети

Категория пользователей

1С:Бухгалтерия, 1С:Зарплата  и
Управление Персоналом

Word, Excel

Почта

Специальное ПО

Отдел продаж (5 сотрудников)

Используют

Используют

Используют

Финансовый отдел (10 сотрудников)

Используют

Используют

Используют

Клиент-Банк (используют 2 сотрудника)

Руководство (5 сотрудников)

Используют

Используют

Используют

Проектировщики (3 сотрудника)

Используют

Используют

Используют

Ответственный по складу (2 сотрудника)

Используют

Используют

Используют

Сотрудники склада (10 сотрудников)

Производство (15 сотрудников)

Используют

Используют

Используют

Рабочее место сотрудника должно содержать (с точки зрения
вычислительной инфраструктуры):

1.      
Системный блок;

2.      
Монитор;

3.      
Мышь и клавиатуру;

4.      
Операционную систему.

Серверный узел состоит (не включая в расчет отдельное
помещение, системы охлаждения, коммутационное оборудование, системы защиты от сбоев
в электросети) из:

1.      
Сервера;

2.      
Серверной операционной системы;

3.      
Клиентских лицензий для доступа и подключения
пользователей.

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

Таблица 2. Стоимость
вычислительной инфраструктуры без терминального сервера

Статьи затрат

Количество пользователей

Стоимость

Итого стоимость (руб.)

Отдел продаж

5

55
800

279
000

Финансовый отдел

8

55
800

446
400

Финансовый отдел (работа с Клиент-банками
и отчетностью)

2

55
800

111
600

Руководство

5

55
800

279
000

Проектировщики

3

70
800

212
400

Ответственный по складу

2

55
800

111
600

Сотрудники склада

10

0

0

Производство

15

55
800

837
000

Сервер

1

215
200

215
200

Обслуживание
ПК в год (из расчета 1 час на 1 ПК в месяц)

51

734 400

734 400

Итого

3 226
600

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

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

Таблица 3. Стоимость
вычислительной инфраструктуры и терминального сервера на базе решений компании Microsoft

Статьи затрат

Количество пользователей

Стоимость

Итого стоимость (руб.)

Отдел продаж

5

25
000

125
000

Финансовый отдел

8

25
000

200
000

Финансовый отдел (работа с Клиент-банками
и отчетностью)

2

55
800

111
600

Руководство

5

25
000

125
000

Проектировщики

3

70
800

212
400

Ответственный по складу

2

25
000

50
000

Сотрудники склада

10

0

0

Производство

15

55
800

837
000

Сервер

1

428
200

428
200

Обслуживание
ПК в год (из расчета 1 час на 1 ПК в месяц + 15 мин на тонкий ПК в месяц)

ПК = 22

Тонкий ПК = 29

316 800

104 400

421 200

Итого

2 510
400

Оценим экономию этого варианта:  (3 226 600-2 510 400)/(3 226 600)*100%=22%

Таким образом, применение терминального
решения позволило сократить затраты (как на технику, так и на сопровождение этого
решения) примерно на 22%.

Давайте рассмотрим вариант организации терминального сервера
не на основе продуктов компании Microsoft,
а на основе свободно распространяемого программного обеспечения. Речь идет об
операционных системах Linux.
Для примера воспользуемся системой Ubuntu 14.5 и системой удаленных рабочих столов X2Go. Стоимость рабочих мест и серверного узла приведена в Таблице
4.

Таблица 4. Стоимость
вычислительной инфраструктуры и терминального сервера на технологиях Linux

Статьи затрат

Количество пользователей

Стоимость

Итого стоимость (руб.)

Отдел продаж

5

25
000

125
000

Финансовый отдел

8

25
000

200
000

Финансовый отдел (работа с Клиент-банками
и отчетностью)

2

55
800

111
600

Руководство

5

25
000

125
000

Проектировщики

3

70
800

212
400

Ответственный по складу

2

25
000

50
000

Сотрудники склада

10

0

0

Производство

15

55
800

837
000

Сервер

1

200
000

200
000

Обслуживание
ПК в год (из расчета 1 час на 1 ПК в месяц + 15 мин на тонкий ПК в месяц)

ПК = 22

Тонкий ПК = 29

316 800

104 400

421 200

Итого

2 282
200

Легко видеть, что стоимость решения стала меньше еще на
228 200 рублей.

В предыдущих вариантах мы исходили из того, что
специализированное программное обеспечение, используемое на производстве в
нашей модельной организации, работает только в среде MicrosoftWindows. Однако это
ограничение можно обойти, если использовать дополнительный терминальный сервер
под управлением MicrosoftWindowsServer.
Это тоже даст нам дополнительную экономию. Расчет стоимости такого варианта представлен
в Таблице 5.

Таблица 5. Стоимость
вычислительной инфраструктуры и терминального сервера от Microsoftи на Linux

Статьи затрат

Количество пользователей

Стоимость

Итого стоимость (руб.)

Отдел продаж

5

25
000

125
000

Финансовый отдел

8

25
000

200
000

Финансовый отдел (работа с Клиент-банками
и отчетностью)

2

25
000

50
000

Руководство

5

25
000

125
000

Проектировщики

3

70
800

212
400

Ответственный по складу

2

25
000

50
000

Сотрудники склада

10

0

0

Производство

15

25
000

375
000

Сервер

1

200
000

200
000

Сервер для
производства

1

323
760

323
760

Обслуживание
ПК в год (из расчета 1 час на 1 ПК в месяц + 15 мин на тонкий ПК в месяц)

ПК = 5

Тонкий ПК = 47

72 200

169 200

241 200

Итого

1 902
360

По сравнению с исходным вариантом можно получить экономию порядка
40%.

Терминальный режим работы с корпоративными приложениями
предоставляет не только снижение затрат на приобретение техники и лицензий, но
и позволяет сэкономить на обслуживании и техподдержке. Кроме того, при
правильной организации процесса, можно повысить безопасность работы
пользователей. Для удаленной работы с терминальным сервером следует организовать
защищенный канал. Сделать это можно, используя как аппаратные, так и
программные решения.

При переходе на свободное программное обеспечение пользователей
интересуют принципы работы в новой среде. Для обычного пользователя среда имеет
отличия, но эти отличия не существенны и не влияют на рабочий процесс.

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

Re: Opensource аналог Windows Terminal Server

«Карл Маркс и Фридрих Энгельс — это четыре разных человека». В смысле, есть протокол rdp, по нему работает windows терминал сервер. Для терминал сервера нужна программка на сервере — «сервер терминалов». Входит в состав win2003. Есть X11, по нему работает Xwindows (по сети без всяких дополнительных программ, «из коробки»). Есть отдельные терминальные сервера под виндовз от третьих фирм: radmin со своим протоколом (или rdp), Citrix со своим ICA, vnc (который работает и под виндовз и под юникс).

То есть, тебе нужен vnc сервер под виндовз и vnc клиенты под Debian. Чтобы на терминальных клиентах Дебиан работать с виндовз приложениями.


>Идея — убрать сервер терминалов на сервере win2003 и заменить его чем либо.

Заменить можно на тот же radmin, vnc. Убрать win2003 совсем не получится, — если тебе надо работать с только юникс-приложениями на терминалах. Клиенты rdp и vnc есть и под виндовз и под линукс.

anonymous

(09.04.08 21:33:54 MSD)

  • Показать ответ
  • Ссылка

Содержание

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

Кратко о работе LTSP

Linux Terminal Server Project (LTSP) — проект, в результате которого энтузиасты-программисты создали пакет программного обеспечения, позволяющий использовать вычислительную мощность одной машины несколькими, путём запуска удалённых X-сессий, которые, в свою очередь, запускают приложения на сервере терминалов.

LTSP реализован в таких дистрибутивах как EduBuntu, Skolelinux, ALT-Linux «Школьный» в виде уже сконфигурированных пакетов. В данной статье речь пойдёт о запуске сервера терминалов на базе дистрибутива Debian Squeeze.

В общем, почитать о принципе работы терминального решения можно в статье Терминальные решения на базе Linux. Рассмотрим по-подробнее как работает LTSP.

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

  1. После запуска сервера, на нём начинает работать демоны DHCPd, TFTPd и xinetd. DHCPd ждёт запросов на получение IP-адреса от «тонких клиентов» в сети. TFTPd всего-лишь передаёт файл образа мини-системы по запросу. xinetd ждёт запросы от удалённых машин на регистрацию и подключение к серверу.

  2. Включается «тонкий клиент». Его сетевая карта, поддерживающая стандарт PXE, в локальную сеть посылает запрос на получение образа мини-системы.

  3. Запрос подхватывает DHCPd совместно с TFTPd на сервере терминалов. Последний по сети отдаёт файл мини-системы «тонкому клиенту», который распаковывается в памяти клиента как «свёрнутая» корневая файловая система.

  4. Далее на тонком клиенте начинает работать сеть и с сервера скачивается полный образ системы. Затем происходит объединение файловых систем /rofs (образ системы в режиме только чтение) и /cow (файловая система с возможностью чтениязаписи) с помощью Aufs и всё это монтируется в корень «/«. Пользовательские файловые системы монтируются в /home посредством sshfs.

  5. На тонком клиенте начинает работать X.org-сервер и запускается менеджер графических окружений. После ввода пароля, на сервере запускаются сервисы графического окружения и приложения, а результат их работы по сети передаётся X.org-серверу на тонком клиенте.

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

Настройка сервера

Прежде чем перейти непосредственно к настройке сервера, желательно в сервер установить ещё один сетевой адаптер, чтобы их было два. Первый будет смотреть в сторону Интернет, а второй будет обслуживать локальную сеть. Таким образом легко можно разделить сети и не пропускать DHCP и прочие «внутренние» запросы в сеть Интернет. Для модели сети, предположим что адаптер, подключённый к Интернет имеет название eth0, а к локальной сети — eth1.

eth0 имеет адрес 192.168.1.1 и подключён к модему с адресом 192.168.1.2 .

eth1 имеет адрес 192.168.10.1 и подключён к коммутатору, к которому подключены и терминалы.

Сеть для терминалов должна быть построена без применения технологии Wi-Fi — должна обладать высокой производительностью и все терминалы должны подключаться как минимум 100-мегабитным Ethernet. Wi-Fi не сможет обеспечить такой производительности для коллективного подключения, да и СВЧ-излучение пагубно действует на мозг. Адаптер eth1 на сервере желательно выбрать гигабитным и включить в гигабитный порт коммутатора.

Иллюстрация модели сети с сервером LTSP

Для примера, для терминалов зарезервируем блок IP-адресов: 192.168.10.10 — 192.168.10.20 включительно. Эти адреса будут выдаваться адаптерам терминалов при включении.

Предполагается, что дистрибутив Debian установлен и сетевые адаптеры настроены. Приступим непосредственно к установке LTSP:

Шаг 1. Установка основных компонентов

Предполагается, что репозитории правильно настроены и установка пакетов с компакт-дисков или из сети Интернет работает. Обновляем списки и устанавливаем необходимое ПО:

 # apt-get update
 # apt-get install ltsp-server-standalone

Установится «инфраструктура» для работы сервера.

Шаг 2. Запуск демонов

Настроим NFS-сервер. Он будет отдавать полный образ системы. Создаём директорию, где он будет содержаться и собираться:

 # mkdir /opt/ltsp

Внимание!

Каталог /opt/ltsp требует как минимум 800 Мбайт свободного пространства, поэтому размещать его нужно на соответствующем разделе.

Теперь настроим NFS-сервер — открываем на редактирование файл /etc/exports и добавляем строку:

exports
/opt/ltsp *(ro,no_root_squash,no_subtree_check,async)

И теперь перезагрузим NFS-сервер:

 # /etc/init.d/nfs-kernel-server reload

Теперь настраиваем DHCP-сервер — открываем на редактирование файл /etc/default/isc-dhcp-server , и выставляем имя (или имена) интерфейсов, которые будут обслуживаться сервером. В нашем случае это eth1:

isc-dhcp-server
INTERFACES="eth1"

Далее переходим в каталог /etc/dhcp и делаем бэкап файла /etc/dhcp/dhcpd.conf :

 # cd /etc/dhcp
 # cp dhcpd.conf dhcpd.conf.bak

В каталоге /etc/ltsp при установке появился файл dhcpd.conf — это разработчики постарались, чтобы пользователи не гадали каким образом соединить DHCPd и TFTPd. Его нужно отредактировать под текущие сетевые параметры и каталоги и скопировать в /etc/dhcp , переписав оригинальный dhcpd.conf . Для нашего случая, файл будет таким:

dhcpd.conf
  - 
  -  Default LTSP dhcpd.conf config file.
  - 
 
authoritative;
 
subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.10 192.168.10.20;        # здесь задаётся диапазон адресов
    option domain-name "example.com";
    option domain-name-servers 192.168.10.1;
    option broadcast-address 192.168.10.255;
    option routers 192.168.10.1;
    next-server 192.168.10.1;
  -     get-lease-hostnames true;
    option subnet-mask 255.255.255.0;
    option root-path "/opt/ltsp/i386";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
}

Вместо доменного имени «example.com» подставьте своё. Оно дожно совпадать с доменным именем самого сервера.

Теперь этот файл копируем в /etc/dhcp и рестартуем DHCP-сервер:

 # cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf
 # /etc/init.d/isc-dhcp-server restart

На этом настройка инфраструктуры завершена. Если интересно что творится на терминалах, лог их работы и загрузки можно транслировать на сервер терминалов. Для этого в файле /opt/ltsp/i386/etc/lts.conf нужно выставить опцию SYSLOG_HOST и указать адрес сервера, на который будет пересылаться лог. В нашем случае это 192.168.10.1. Пример опции:

lts.conf
[[default]] 
    LTSP_CONFIG=True
    SYSLOG_HOST=192.168.10.1

После этого нужно пересобрать образ. Об этом — ниже.

На сервере нужно включит возможность приёма сообщений от удалённых машин. Открываем /etc/default/rsyslog и добавляем в строку опций параметр -r. Пример:

RSYSLOGD_OPTIONS="-c2 -r"

Теперь в конфиге самого rsyslog — /etc/rsyslog.conf , нужно раскомментировать строки, касающиеся протокола UDP. Пример:

  #  provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Далее нужно рестартовать rsyslogd:

 # /etc/init.d/rsyslog restart

Теперь удалённые терминалы будут отсылать служебные сообщения в единый syslog.

Сборка образа

Для обеспечения загрузки X.org-сервера на терминалах, нужна минимальная linux-система. Для создания таковой используется команда ltsp-build-client. Соберём образ:

  # ltsp-build-client --arch i386 --mirror http://ftp.us.debian.org/debian/ --security-mirror  http://security.debian.org/debian-security/

В качестве зеркал (mirror и security-mirror) можно выбрать любое ближайшее зеркало пакетов Debian. Программа начнёт скачивать пакеты, в конце сформирует chroot-окружение в каталоге /opt/ltsp/i386 , а потом соберёт образ и сохранит его в каталоге /opt/ltsp/images . Если в качестве тонких клиентов применяется архитектура amd64, это следует указать параметром —arch. Например:

  # ltsp-build-client --arch amd64 --mirror http://ftp.us.debian.org/debian/ --security-mirror  http://security.debian.org/debian-security/

На этом этапе уже можно опробовать систему в работе

Настройка образа

С точки зрения функционирования системы в целом, различается область конфигурирования внутри образа (внутри chroot-окружения) и настроек запуска менеджера графических окружений на терминалах. Для первой области, необходимо «входить» внутрь системы образа через команду ltsp-chroot и выполнять необходимые действия, как будто работа происходит непосредственно в этом образе. Для второй области существует файл /opt/ltsp/i386/etc/lts.conf , где можно задать конкретные глобальные параметры для менеджера графических окружений и частично для всего образа. Пример файла:

lts.conf
[default]
    # секция глобальных настроек для всех терминалов
    LTSP_CONFIG=True
 
    # разрешение или запрет функций 
    #SOUND=False
    #CONFIGURE_X=False
 
    # разрешить монтирование накопителей на терминалах к системе
    LOCALDEV=True
    # если дистрибутив - Debian, то добавить ещё строку: 
    LOCALDEV_DENY_INTERNAL_DISKS=false
 
    # конкретно указываем сервер
    SERVER=192.168.10.1
 
    # указываем куда отправлять лог с терминала 
    SYSLOG_HOST=192.168.10.1
 
    # режим работы X-сервера 
    #XSERVER=vesa
 
    # разрешение экрана X-сервера на этапе загрузки менеджера графических окружений
    # после входа в систему, подключается файл /opt/ltsp/i386/etc/X11/xorg.conf если он существует
    #X_MODE_0=800x600
    X_MODE_0=1024x768
 
 
[192.168.10.12]
    # настройки для конкретного терминала, при условии, что IP-адрес привязан к
    # терминалу посредством DHCPd
    XSERVER=ati
    X_MOUSE_DEVICE=/dev/ttyS0
    X_MOUSE_PROTOCOL="Microsoft"

Подробнее по опциям lts.conf можно почитать на LTSP-wiki

В образ можно поставить какое-нибудь дополнительное программное обеспечение, чтобы на этапе отладки выполнять какие-либо действия. Например, можно поставить Midnight Commander. Для начала зайдём в chroot-окружение и установим пароль root`а (по умолчанию он заблокирован):

 # ltsp-chroot
 #/ sudo passwd
 вводим пароль и подтверждаем его.

Теперь настроим репозитории, обновим списки, установим нужную программу и выйдем из chroot-окружения по Ctrl+D или exit:

 #/ nano /etc/apt/sources.list
 #/ apt-get update
 #/ apt-get install mc
  ^D
 #

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

 # ltsp-update-image -i

, а потом перезагружать все терминалы для вступления изменений в силу. Образ собирается от 2-х до 20 минут в зависимости от производительности сервера. Терминалы, работающие в этот момент на старом образе, получат уведомления на перезагрузку. А вообще, пересборку образа лучше производить при отключенных терминалах.

Настройка аппаратного «тонкого клиента» Igel 3210 LX

Не спрашивайте почему именно эта модель :-) Получилось так, что мой друг увидел эти штуки на немецком аукционе http://www.ebay.de/ и уже успешно прикупил парочку. Потом посоветовал мне и я согласился заказать тоже пару штук для экспериментов. Пара таких тонких клиентов обошлась в 38 евро (т.е. всего около 1600руб.) плюс доставка в Амурскую область (около 1500руб.) Всего вышло 3100руб. Если покупать новые устройства, то они мне обошлись бы в 6000руб. каждый. Первое, на чём я опробовал LTSP как раз были эти тонкие клиенты от немецкой фирмы Igel.

Краткие характеристики модели: Igel 3/4 3210LX Compact

Загрузка по сети

Система, работающая на накопителе тонкого клиента не поддерживает LTSP, поэтому от неё пришлось отказаться. Вторая проблема, с которой пришлось столкнуться — отсутствие поддержки технологии PXE сетевым адаптером клиента (в некоторых вариациях данного тонкого клиента поддержка PXE есть, просто ее нужно включить в настройках BIOS, в дух местах). Другими словами, по сети мой экземпляр не захотел грузиться.

Проблема решилась созданием загрузочного usb-диска. Потом образ можно перенести на карту Compact Flash маленького размера. Для эксперимента пока возъмём usb-флешку.

Шаг 1. Скачиваем исходники для сборки загрузочного диска

За основу был взят проект Etherboot потому как на остальные проекты ссылки не работали. Сборка образа происходит на любой свободной linux-машине из исходных кодов. Для начала заходим на http://etherboot.org/wiki/download и читаем что там нужно сделать.

Итак, на свободной Linux-машине, устанавливаем систему работы с исходными кодами git и ещё несколько пакетов:

 # apt-get install git gcc perl syslinux mtools binutils

Далее переходимсоздаём какой-нибудь каталог и перекачиваем исходные коды с репозитория проекта:

 $ mkdir etherboot
 $ cd etherboot
 $ git clone git://git.etherboot.org/scm/gpxe.git

Шаг 2. Сборка образа и запись на usb-накопитель

В каталоге etherboot будет создан подкаталог gpxe . Нужно перейти в каталог gpxe/src и выполнить команду make:

 $ cd gpxe/src
 $ make

Если компиляция прошла успешно, в каталоге bin будут версии файлов для того или иного накопителя:

  • gpxe.dsk — для флоппи-диска 3.5 дюймов

  • gpxe.usb — для usb-накопителя

  • gpxe.iso — для cd-rom

Для нашего случая нужен файл bin/gpxe.usb . Теперь вставляем usb-накопитель в компьютер, всё что нужно, с него копируем на жёсткий диск, поскольку все данные на нём будут уничтожены. С помощью команды dmesg выясняем имя накопителя и командой dd перекидываем образ. Для примера, usb-устройство будет именоваться sdd:

 $ cd ..
 # dd if=bin/gpxe.usb of=/dev/sdd

Будьте внимательны с выбором устройства!

Теперь осталось только вставить накопитель в сободный порт и в настройках BIOS выставить загрузку с USB.

Настройки видеосистемы

В модели Igel 3210 LX применён видеоадаптер VIA. В Linux не работает аппаратное ускорение, но базовые функции доступны и работают без проблем. Автору так и не удалось нормально запустить вывод изображения нужного разрешения и частоты кадров на порт DVI, зато выход VGA работает исправно.

По умолчанию, при первом запуске всей системы, менеджер графических окружений (ldm) выбрал разрешение 800×600. При регистрации в системе, выбрать разрешение выше — нельзя. Это связано с тем, что X-сервер сам выбирает драйвер и его параметры в зависимости от результата опроса аппаратуры. Поэтому, необходима ручная настройка параметров и менеджера графических окружений и X.org-сервера.

Очень кратко, процесс настройки выглядит так:

  1. Разблокировать пароль пользователя root в chroot-окружении, из которого создаётся полный образ системы.

  2. Пересобрать образ.

  3. Запустить тонкий клиент, перейти на нём в соседнюю консоль. Зарегистрироваться как root и выполнить автоконфигурацию X.org командой: X -configure . В текущем каталоге будет создан новый конфиг. Его нужно будет скопировать на сервер командой scp, отредактировать под режимы монитора.

  4. Новый конфиг xorg.conf поместить в chroot-окружение.

  5. Подправить файл lts.conf и выставить в нём рабочее разрешение для ldm.

  6. Пересобрать образ и опробовать конфигурацию.

Подробнее — ниже.

1. Разблокировка пользователя root была описана выше, но повторюсь для понимания: для входа в chroot-окружение применяем команду ltsp-chroot , после чего стандартными методами меняем пароль:

 # ltsp-chroot
 #/ sudo passwd
   вводим пароль и подтверждаем его. 

Выйти из chroot-окружения можно по комбинации Ctrl + d или по команде exit.

2. Теперь пересобираем образ:

 # ltsp-update-image -i

3. Запускаем тонкого клиента. Если всё удачно, то появится меню менеджера графических окружений с полями для ввода логинапароля. Переходим в соседнюю консоль через Ctrl + Alt + F1. Регистрируемся в системе под пользователем root и паролем, который мы ему изменили. Выполняем команду:

 # X -configure

В текущем каталоге появится файл xorg.conf.new . Копируем его на сервер:

 # scp xorg.conf.new 192.168.10.1@root:/root/

Теперь переходим на сервер, редактируем новый конфиг и вписываем рабочие параметры монитора, которые можно подсмотреть в инструкции по монитору. Если этого не сделать, то часть режимов не будет доступна тонкому клиенту. В моём случае, файл получился такой:

xorg.conf.new
Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
 
Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/X11/misc"
	FontPath     "/usr/share/fonts/X11/cyrillic"
	FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/Type1"
	FontPath     "/usr/share/fonts/X11/100dpi"
	FontPath     "/usr/share/fonts/X11/75dpi"
	FontPath     "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
	FontPath     "built-ins"
EndSection
 
Section "Module"
	Load  "dbe"
	Load  "dri"
	Load  "dri2"
	Load  "extmod"
	Load  "glx"
	Load  "record"
EndSection
 
Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection
 
Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection
 
  -  Section "Monitor"
  - 	Identifier   "Monitor0"
  - 	VendorName   "Monitor Vendor"
  - 	ModelName    "Monitor Model"
  - EndSection
 
Section "Monitor"
    	Identifier    "Benq_FP91G+"
    	HorizSync     31-81
    	VertRefresh   56-76
EndSection
 
 
Section "Device"
        ### Available Driver options are:-
        ### Values: <i>> integer, <f>> float, <bool>> "True"/"False",
        ### <string>> "String", <freq>> "<f> Hz/kHz/MHz"
        ### [[arg]]: arg optional
        #Option     "PrintVGARegs"       	# [[<bool>]]
        #Option     "PrintTVRegs"        	# [[<bool>]]
        #Option     "I2CScan"            	# [[<bool>]]
        #Option     "VBEModes"           	# [[<bool>]]
        #Option     "NoAccel"            	# [[<bool>]]
        #Option     "AccelMethod"        	# <str>
        #Option     "ExaNoComposite"     	# [[<bool>]]
        #Option     "ExaScratchSize"     	# <i>
        #Option     "SWCursor"           	# [[<bool>]]
        #Option     "ShadowFB"           	# [[<bool>]]
        #Option     "RotationType"       	# [[<str>]]
        #Option     "Rotate"             	# [[<str>]]
        #Option     "VideoRAM"           	# <i>
        #Option     "ActiveDevice"       	# [[<str>]]
        #Option     "BusWidth"           	# [[<str>]]
        #Option     "Center"             	# [[<bool>]]
        #Option     "PanelSize"          	# [[<str>]]
        #Option     "ForcePanel"         	# [[<bool>]]
        #Option     "TVDotCrawl"         	# [[<bool>]]
        #Option     "TVDeflicker"        	# <i>
        #Option     "TVType"             	# [[<str>]]
        #Option     "TVOutput"           	# [[<str>]]
        #Option     "TVPort"             	# [[<str>]]
        #Option     "DisableVQ"          	# [[<bool>]]
        #Option     "DisableIRQ"         	# [[<bool>]]
        #Option     "EnableAGPDMA"       	# [[<bool>]]
        #Option     "NoAGPFor2D"         	# [[<bool>]]
        #Option     "NoXVDMA"            	# [[<bool>]]
        #Option     "VbeSaveRestore"     	# [[<bool>]]
        #Option     "DisableXvBWCheck"   	# [[<bool>]]
        #Option     "ModeSwitchMethod"   	# [[<str>]]
        #Option     "MaxDRIMem"          	# <i>
        #Option     "AGPMem"             	# <i>
	Identifier  "Card0"
	Driver      "openchrome"
	VendorName  "VIA Technologies, Inc."
	BoardName   "CN700/P4M800 Pro/P4M800 CE/VN800 [[S3|UniChrome Pro]]"
	BusID       "PCI:1:0:0"
EndSection
 
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	DefaultDepth      24
	# Monitor    "Monitor0"
        Monitor      "Benq_FP91G+"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
		Modes     "800x600" "1024x768" "1280x1024"
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes     "800x600" "1024x768" "1280x1024"
	EndSubSection
EndSection

4. Копируем этот файл в chroot-окружение:

 # cp xorg.conf.new /opt/ltsp/i386/etc/X11/

5. Теперь выставляем рабочее разрешение для менеджера графических окружений, путём редактирования файла /opt/ltsp/i386/etc/lts.conf . В него нужно добавить опцию X_MODE_0=1024×768 в секцию default.

6. Пересобираем образ системы:

 # ltsp-update-image -i

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

Настройка аудиоподсистемы

Есть проблема с регулировкой громкости звука на терминале. Когда пользователь работает на терминале, в окружении GNOME, средствами GNOME, производится регулировка на сервере, а нужно производить регулировку на самом терминале локально.

Пока проблема решается регуляторами громкости в самих программах. Можно в соседнем терминале запускать alsamixer, но это не всегда удобно. Автор работает над проблемой.

Настройка «тонкого клиента» на базе бездисковой PC-машины

Конфигурация пока не опробована.

Разрешение проблем

Не работает монтирование накопителей

По умолчанию, все нужные компоненты устанавливаются и работают как надо. В Debian`е нужно поработать руками: сам достаточно долго искал проблему. Для начала, пользователь, который зарегистрирован в системе и работает через терминалы, должен быть в группах: cdrom, floppy, audio, dip, video, plugdev, manager, fuse. Проверьте /etc/group на сервере . Если пользователя не будет в группе fuse, то монтирование работать не будет. Измените /etc/group и сделайте повторный вход в систему. Если не помогло, то проверяем наличие компонентов ltspfs на сервере и образе системы:

 # dpkg -l |grep ltspfs
   ii  ltspfs             0.7-2  Fuse based remote filesystem for LTSP thin clients
**ltspfs** присутствует. Теперь заходим в образ системы и делаем проверку на наличие **ltspfsd**:
 # ltsp-chroot
 #/ dpkg -l |grep ltspfsd
   ii  ltspfsd            0.7-2   Fuse based remote filesystem hooks for LTSP thin clients
   ii  ltspfsd-core       0.7-2   Fuse based remote filesystem daemon for LTSP thin clients

Тоже присутствует.

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

 #/ cat /etc/lts.conf
    ....
    LOCAL_APPS=True
    LOCALDEV_DENY_INTERNAL_DISKS=false
    ....

Опция LOCALDEV_DENY_INTERNAL_DISKS справедлива только для Debian Squeeze. О ней есть упоминание в /usr/share/doc/ltspfd/NEWS.Debian.gz:

ltspfs (0.5.11-3) unstable; urgency=low

    the mechanism for enabling local disks changed in version 0.5.6-1. set
    LOCALDEV_DENY_INTERNAL_DISKS=false in /etc/lts.conf to enable local disks.

 -- Vagrant Cascadian <email>  Wed, 22 Apr 2009 11:37:06 -0700

Если опция не была выставлена — выставляем и пересобираем образ командой ltsp-update-image -i , после чего можно попробовать включить терминал, войти в систему и подключить носитель.

Далее можно посмотреть советы по устранению данной неисправности у сообщества Ubuntu:

Смотрите также

  • Статья Максима Черепанова «VirtualBox: 6 XP» в журнале LinuxFormat №169 (за апрель 2013 г.) — описывается создание 6-ти виртуальных рабочих мест на одном сервере с применением VirtualBox и тонких клиентов.

Skip to end of metadata

  • Создатель , отредактировано 31.01.23

Go to start of metadata

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
    с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
    с установленным обновлением Бюллетень № 20201007SE16
  • Astra Linux Common Edition 2.12.24

Общие сведения

Linux Terminal Server Project (LTSP) — свободно распространяемое ПО с открытым исходным кодом, позволяющие пользователям с маломощными компьютерами (терминалами) использовать вычислительные мощности одного более производительного компьютера (сервера). При этом все приложения запускаются на сервере, а терминалы, также называемые тонкими клиентами (или X-терминалами), принимают видеоряд, посылаемый сервером, и кроме него ничего не обрабатывают. Как правило, терминал представляет собой маломощный компьютер, в котором даже может отсутствовать жесткий диск, вследствие чего терминал работает тише и потребляет меньше энергии, чем обычный настольный компьютер.

Для передачи клиентам первичной информации (IP-адрес терминала и IP-адрес сервера, к которому должен подключаться терминал) DHCP. Далее рассматриваются два варианта настройки служб, входящих в состав Astra Linux:

  • служба dnsmasq — упрощенная служба DHCP. Эта служба устанавливается вместе с сервером LTSP, включает в свой состав простой TFTP-сервер, и позволяет быстро настроить нужные параметры для работы терминалов;
  • служба isc-dhcp-server  — полноценная служба DHCP. Эта служба обычно применяется в больших сетях. При использовании службы isc-dhcp-server требуется дополнительно установить службу TFTP.

При соответствующей настройке могут использоваться и другие службы (например, служба DHCP, встроенная в маршрутизатор сети).

Подключение клиентов осуществляется по протоколу SSH (рекомендованный вариант), или по протоколу xRDP.

Входящая в состав Astra Linux версия LTSP поддерживает два режима работы клиентов:

Работа клиентов в сессиях с ненулевыми классификационными метками не поддерживается.
Работа клиентов в сессиях с ненулевой целостностью поддерживается частично (см. далее).
При работе с Astra Linux Special Edition x.7 для настройки сервера и для создания образов требуется подключение расширенного репозитория.

  • «Тонкий клиент» — по сети загружается минимальный образ с базовой системой и графическим сервером. Приложения выполняются на сервере терминалов в среде ОС сервера, используя файловую систему сервера. Результаты работы передаются по сети графическому серверу и на дисплей терминального клиента. Доступны только приложения, установленные на сервере. При включенном на сервере МКЦ клиентские сессии подключаются только на максимальном уровне МКЦ из доступных клиенту. Клиентам доступны устройства (например, сменные носители), подключаемые к серверу. Функционально тонкий клиент является аналогом удаленного входа с полноценного компьютера в пользовательскую сессию на сервере, только вместо собственной ОС компьютера используется загруженный с сервера образ ОС.  Этот вариант может быть рекомендован для парка, состоящего преимущественно из старых и маломощных клиентских компьютеров с графикой низкого разрешения;
  • «Толстый клиент» — по сети загружается полноценный образ с ОС. Приложения выполняются непосредственно на терминальном клиенте, а сервер просто предоставляет доступ к пользовательским данным (домашние каталоги автоматически  монтируются при входе пользователя в сессию). Работа с ненулевыми метками безопасности (ненулевыми классификационными метками и ненулевой целостностью) не поддерживается. Клиенту недоступны устройства, подключаемые к серверу, но доступны устройства, подключаемые к клиентской машине. Этот вариант является предпочтительным для современных клиентских машин, особенно машин, использующих графику высокого разрешения (передача по сети графики высокого разрешения может оказаться неприемлемо ресурсоемкой). 

Клиент автоматически загружается в «толстом» режиме при наличии в клиенте рабочего стола (fly-wm). Кроме того, для указания режима загрузки клиентов можно использовать опцию LTSP_FATCLIENT=true/false (по умолчанию не задана) в файле /var/lib/tftpboot/ltsp/amd64/lts.conf на сервере терминалов (подробнее см. https://manpages.ubuntu.com/manpages/trusty/man5/lts.conf.5.html ).

В данной статье описывается работа с сервером LTSP (ltsp-server-standalone) версии 5.18.12-3.1, позволяющей создавать гостевые образы Astra Linux Special Edition и Astra Linux Common Edition  на любой из этих ОС (по умолчанию создается гостевой образ, соответствующий текущей хост-системе).  Эта версия доступна для установки:

  • При работе в Astra Linux Special Edition x.7 — из расширенного репозитория (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования);
  • При работе в Astra Linux Special Edition РУСБ 10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5) и Astra Linux Special Edition РУСБ.10015-16 исп. 1 с установленным обновлением Бюллетень № 20201007SE16 — из репозитория со средствами разработки;
  • При работе с более ранними обновлениями Astra Linux Special Edition и Astra Linux Common Edition — из репозитория Astra Linux Common Edition.

Настройка сервера

Настройка сетевого интерфейса

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

  • подключен к локальной сети с адресом сети 192.168.56.0;
  • имеет имя eth0;
  • имеет статический адрес (для примера 192.168.56.10/24).

Сетевой интерфейс может быть настроен любым предпочтительным способом, например, с помощью Network Manager.

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

, что перед установкой пакетов подключены и настроены репозитории (установочные диски).

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

  • Для Astra Linux Special Edition x.7:
    • подключить расширенный репозиторий (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования);
  • Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6):
    • установочный диск;
    • диск со средствами разработки;
    • образ обновления установочного диска (update-iso);
    • образ обновления диска со средствами разработки (update-dev-iso);
  • Для Astra Linux Common Edition установка выполняется из штатного репозитория.

пакетов может быть выполнена с помощью графического менеджера пакетов или из командной строки командой:

sudo apt install ltsp-server-standalone xrdp ssh

При установке пакета ltsp-server-standalone автоматически будут установлены пакеты:

  • ltsp-server — набор сценариев для создания сервера терминалов;
  • dnsmasq — простой DHCP/TFTP сервер.

Установка пакета xrdp необязательна, и нужна для поддержки работы по протоколу xRDP в дополнение к протоколу SSH.

После установки пакетов проверить состояние службы ssh:

sudo systemctl status ssh

И, если служба не запущена, то разрешить её автоматический запуск и запустить службу:

sudo systemctl enable ssh
sudo systemctl start ssh

Установка и настройка служб DHCP

Если в сети уже присутствует служба DHCP, то следует использовать уже существующую службу, дополнив её настройки как указано ниже. 

Для корректной загрузки клиентов в настройках подсети, обслуживаемой используемой службой DHCP, должны быть указаны:

  • IP-адрес TFTP-сервера;
  • путь к каталогу с образами для загрузки. Порядок создания образа описан далее, см. Создание и настройка загрузочных образов;
  • пути к файлам, используемым для загрузки по сети (PXE). В примерах упоминаются два файла для загрузки:
    • /ltsp/amd64/pxelinux.0 — создается при создании образа;
    • /ltsp/amd64/nbi.img — предназначен для сетевой загрузки с помощью Etherboot или NetBoot. В данной статье не рассматривается.

В приведенных далее настройках службы isc-dhcp-server указанные настройки соответствуют следующим параметрам:

subnet <подсеть> netmask <маска_подсети> {
  next-server <IP-адрес_TFTP_сервера>;
  option root-path "<путь_к_каталогу_с_образами>";
  if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
  # Образы PXE
    filename "/ltsp/amd64/pxelinux.0";
  } else {
    filename "/ltsp/amd64/nbi.img";
  }
}

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

Если используемая служба DHCP не поддерживает необходимые для терминального сервера настройки (например, встроенная служба DHCP сетевого маршрутизатора), следует рассмотреть возможность замены этой службы. Одновременное использование нескольких служб DHCP в одной сети требует специальных настроек, и, в общем случае, недопустимо.

Далее описаны настройки двух разных служб DHCP — dnsmasq и isc-dhcp-server

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

  • Пакет dnsmasq содержит в себе не только упрощенную версию службы DHCP, но и упрощенную версию службы TFTP. При использовании службы isc-dhcp-server служба TFTP должна быть установлена и настроена отдельно (пакет tftpd-hpa);
  • По возможности не следует использовать упрощенную службу dnsmasq, .а сразу переходить к настройке и использованию полноценной службы isc-dhcp-server и службы tftpd-hpa.

Установка и настройка службы dnsmasq

  1. Служба dnsmasq устанавливается автоматически при установке пакета ltsp-server-standalone. Отдельно эту службу можно установить командой:

    sudo apt install dnsmasq

  2. Создать файл /etc/dnsmasq.d/ltsp-server-dnsmasq.conf конфигурации службы dnsmasq командой :

    sudo ltsp-config --overwrite dnsmasq

  3. Отредактировать файл конфигурации /etc/dnsmasq.d/ltsp-server-dnsmasq.conf:

    В конфигурационном файле, устанавливаемом по умолчанию, указан параметр использования proxy:

    dhcp-range=192.168.56.0,proxy

    Для получения работоспособной конфигурации эти параметры следует отключить (или использовать пример конфигурационного файла, приведенный ниже). Порядок использования proxy см. в справочной системе man dnsmasq.

    Минимальные исправления конфигурационного файла:
     — указать диапазон адресов, выдаваемых сервером DHCP (в примере ниже изменения отмечены выделением);
     — если в сервере используется несколько сетевых интерфейсов, то указать интерфейс, который должен обслуживаться сервером в параметре interface.
    Пример конфигурационного файла:

     Пример файла конфигурации

    # Configures dnsmasq for PXE client booting.
    # All the files in /etc/dnsmasq.d/ override the main dnsmasq configuration in
    # /etc/dnsmasq.conf.
    # You may modify this file to suit your needs, or create new ones in dnsmasq.d/.
    #interface=eth0
    # Log lots of extra information about DHCP transactions.
    #log-dhcp
    # IP ranges to hand out.
    dhcp-range=192.168.56.20,192.168.56.250,8h
    # The rootpath option is used by both NFS and NBD.
    dhcp-option=17,/opt/ltsp/amd64
    # Define common netboot types.
    dhcp-vendorclass=etherboot,Etherboot
    dhcp-vendorclass=pxe,PXEClient
    dhcp-vendorclass=ltsp,»Linux ipconfig»
    # Set the boot filename depending on the client vendor identifier.
    # The boot filename is relative to tftp-root.
    dhcp-boot=net:pxe,/ltsp/amd64/pxelinux.0

    dhcp-boot=net:ltsp,/ltsp/amd64/lts.conf
    # Kill multicast.
    dhcp-option=vendor:pxe,6,2b
    # Disable re-use of the DHCP servername and filename fields as extra
    # option space. That’s to avoid confusing some old or broken DHCP clients.
    dhcp-no-override
    # The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
    # Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
    pxe-service=X86PC, «Boot from network», /ltsp/amd64/pxelinux
    # Comment the following to disable the TFTP server functionality of dnsmasq.
    enable-tftp
    # The TFTP directory. Sometimes /srv/tftp is used instead.
    tftp-root=/var/lib/tftpboot/
    # Disable the DNS server functionality of dnsmasq by setting port=0

  4. Перезапустить сервис dnsmasq командой:

    sudo systemctl restart dnsmasq

Настройка служб isc-dhcp-server и tftpd-hpa

  1. Остановить службу dnsmasq и запретить её автоматический запуск:

    sudo systemctl stop dnsmasq
    sudo systemctl mask dnsmasq

  2. Установить пакеты:

    sudo apt install isc-dhcp-server tftpd-hpa

  3. Выполнить на сервере терминалов команду:

    sudo ltsp-config —overwrite isc-dhcp-server

    В результате выполнения команды будет создан конфигурационный файл /etc/ltsp/dhcpd.conf для службы isc-dhcp-server следующего вида:

    #
    # Default LTSP dhcpd.conf config file.
    #
    
    authoritative;
    
    subnet 192.168.67.0 netmask 255.255.255.0 {
      range 192.168.67.20 192.168.67.250;
      option domain-name "example.com";
      option domain-name-servers 192.168.67.1;
      option broadcast-address 192.168.67.255;
      option routers 192.168.67.1;
      next-server 192.168.67.1;
    # get-lease-hostnames true;
      option subnet-mask 255.255.255.0;
      option root-path "/opt/ltsp/amd64";
      if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/amd64/pxelinux.0";
      } else {
        filename "/ltsp/amd64/nbi.img";
      }
    }

    Указанные в полученном файле параметры сетевые адреса и сетевые маски) следует заменить на актуальные. Подробнее про настройку службы isc-dhcp-server см. статью  DHCP;

  4. Если в используемой сети нет службы DHCP, а служба DHCP нужна только для сервера терминалов и не используется более ни для чего, то после внесения актуальных сетевых адресов и масок полученных на предыдущем шаге файл можно использовать как файл конфигурации службы isc-dhcp-server, просто скопировав его в каталог /etc/dhcp/:

    sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.bak
    sudo cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf

    Если служба DHCP используется для иных целей (в том числе, если используется служба, отличная от isc-dhcp-server), то параметры next-server, option root-path и блок if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient"  из полученного файла /etc/ltsp/dhcpd.conf должны быть перенесены в конфигурацию используемой службы;

  5. Для настройки службы tftpd-hpa в конфигурационном файле /etc/default/tftpd-hpa изменить путь к корню разделяемого ресурса сервера:

    TFTP_DIRECTORY="/var/lib/tftpboot"
  6. После внесения изменений в конфигурацию перезапустить службы:

    sudo systemctl restart isc-dhcp-server tftpd-hpa

Настройка клиентов

Для клиентов требуется выбрать в параметрах BIOS (или в параметрах виртуальной машины) загрузку по сети. Для клиентов на виртуальных машинах может понадобиться изменить тип виртуального устройства Video, установив тип устройства Virtio или иной.

Создание и настройка загрузочных образов

Создание и настройка образа тонкого клиента

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

Для создания образа тонкого клиента используется сценарий ltsp-build-client. Особенности применения сценария зависят от создаваемой гостевой ОС (Common Edition или Special Edition).

По умолчанию для подключения терминала используется протокол SSH, подключение выполняется к ОС хоста и при этом доступны все учетные записи ОС.

Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)

В Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) для сборки образа можно использовать Интернет-репозитории Astra Linux Special Edition x.7. Пример команды для сборки образа с использованием интернет—репозиториев:

Расширенный репозиторий (параметр —extra-mirror «https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended») указан только для полноты примера, и, если не нужны находящиеся в нем пакеты, то его можно не указывать (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования).

Используемые в этом и следующих примерах опции команды ltsp-build-client:

  • —mirror — репозиторий пакетов для базовой установки (зеркало по умолчанию);
  • —early-mirror — репозиторий пакетов с приоритетом выше, чем у зеркала по умолчанию;
  • —extra-mirror — репозиторий пакетов, устанавливаемых после установки базовой системы. Для Astra Linux Special Edition x.7 с помощью этой опции подключается расширенный репозиторий, использование которого обязательно (параметр —extra-mirror со значением «https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended»). Подробнее про репозитории см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования);
  • —early-packages — задать список пакетов для установки после завершения базовой установки. Названия дополнительных пакетов должны быть указаны через запятую без пробелов. В примере выше эта опция используется для установки пакета dpkg. Этот пакет требуется, если в дальнейшем предполагается устанавливать или удалять пакеты в созданном образе (в созданном chroot-окружении). При сборке образа толстого клиента эту опцию можно использовать для установки пакета fly-all-main (графические программы);
  • —purge-chroot — перед установкой очистить каталог, в который будет выполняться установка chroot-окружения (если такой каталог уже существует);
  • —components contrib,main,non-free — компоненты репозиториев, из которых должна выполняться установка;
  • —kernel-packages linux-image-5.4-generic — список пакетов ядра для установки.

    Для сборки образов должны использоваться пакеты, присутствующие в подключенных репозиториях. Нарушение этого требования приводит к сборке неработоспособных образов.

  • —mode — режим защиты создаваемого клиента. В доступной реализации не используется. Применимо только для терминалов Astra Linux Special Edition x.7. Задается цифрой (0, 1 или 2). Описание режимов защиты см. Astra Linux Special Edition (очередное обновление x.7): Ключевые изменения в комплексе средств защиты информации).

При сборке образа:

  • По умолчанию в качестве имени образа используется имя архитектуры — amd64, и при установке пакетов все службы настраиваются на работу с этим образом. При изменении имени потребуется перенастройка служб.
  • В каталоге /opt/ltsp/amd64 будет создано chroot-окружение (каталог chroot-окружения может быть изменен опцией —chroot, в которой указывается имя подкаталога в каталоге /opt/ltsp. В имени не допускается использовать символы «точка»).
  • В каталоге /opt/ltsp/images будет создан образ для загрузки. Имя образа — имя подкаталога chroot-окружения с расширением .img.

После создания образа следует перезапустить службу nbd-server:

sudo systemctl restart nbd-server

Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

В Astra Linux Special Edition для сборки образа нужно настроить репозитории пакетов или примонтировать установочный диск (или образ диска) Astra Linux Special Edition. Например, образ установочного диска в файле smolensk-1.6-20.06.2018_15.56.iso можно примонтировать командой

sudo mount smolensk-1.6-20.06.2018_15.56.iso /media/cdrom

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

  • установочный диск;
  • диск со средствами разработки;
  • образ обновления установочного диска (update-iso);
  • образ обновления диска со средствами разработки (update-dev-iso).

Пример команды для сборки образа Astra Linux Special Edition 1.6 с использованием интернет-репозиториев Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6):

В отличие от опций сборки, применяемых в Astra Linux Common Edition, в Astra Linux Special Edition 1.6 используются две обязательные опции:

—update-bin — путь к ISO-образу репозитория с обновлением smolensk;
—update-dev — путь к ISO-образу репозитория с обновлением smolensk-devel.

В этих опциях работа с распакованными репозиториями не поддерживается. 

Также могут использоваться необязательные опции —mirror, —early-mirror и —extra-mirror, указывающие на распакованные репозитории (примонтированные образы).   В этих опциях, в отличие от опций —update-bin и —update-dev, работа с ISO-образами не поддерживается.

Если предполагается использовать графическую оболочку, то следует сразу установить пакет fly-all-main (использовать опцию —early-packages).

В Astra Linux Special Edition помимо устанавливаемых в Astra Linux Common Edition пакетов будут установлены пакеты parsec и linux-astra-modules. В процессе работы сценария будут появляться запросы на установку/монтирование необходимых дисков в каталог /media/cdrom.

Astra Linux Common Edition

В Astra Linux Common Edition по умолчанию для сборки образа будет использоваться тот же дистрибутив и/или архитектура что и на серверной системе, и сценарий сборки образа в простейшем случае может быть вызван без параметров:

sudo ltsp-build-client

Если в клиентах предполагается дальнейшая работа с пакетами, то следует сразу установить пакет dpkg:

sudo ltsp-build-client --early-packages dpkg

Настройка образа тонкого клиента

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

[ -d /parsecfs ] && [ -d /opt/ltsp/amd64/parsecfs ] && sudo mount —bind /parsecfs /opt/ltsp/amd64/parsecfs
sudo ltsp-chroot -m
apt update
useradd -g adm -G sudo -s /bin/bash -m <имя_администратора>
passwd <имя_администратора>
exit
[ -d /parsecfs ] && [ -d /opt/ltsp/amd64/parsecfs ] && sudo umount /opt/ltsp/amd64/parsecfs

В приведенном выше примере первая и последняя команды (монтирование и размонтирование файловой системы /parsecfs) нужны (и сработают) только в Astra Linux Special Edition для образов Astra Linux Special Edition. В Astra Linux Common Edition и для образов Astra Linux Common Edition эти команды не нужны. При этом подразумевается, что распакованная система находится в chroot-каталоге, создаваемом по умолчанию (каталог /opt/ltsp/amd64/), если это не так, то эти команды монтирования и размонтирования нужно изменить соответствующим образом.

Если ранее не был установлен пакет fly-all-main (или какой-то другой нужный пакет), то пакеты можно доустановить в любой момент:

sudo ltsp-chroot -m apt install <имя_пакета>

Опция -m включает автоматическое монтирование каталогов, необходимых для установки некоторых пакетов.
При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру —chroot команды ltsp-build-client);

Команда ltsp-chroot вносит изменения только в chroot-окружения. Для того, чтобы изменения были перенесены в образ (стали доступны клиентам) необходимо обновить созданный образ:

sudo ltsp-update-image

Обновление созданного образа с помощью команды ltsp-update-image необходимо выполнять после внесения изменений в chroot-образ (например, после создания нового пользователя).

По умолчанию для клиентов используется файл конфигурации, находящийся в образе терминального клиента (/opt/ltsp/amd64/etc/lts.conf).

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

sudo ltsp-config --overwrite lts.conf

После создания файла конфигурации на сервере терминалов для клиентов будет использоваться файл /var/lib/tftpboot/ltsp/amd64/lts.conf.

Создание и настройка образа толстого клиента

При создании «толстого» образа в него переносятся учетные записи машины, на которой создается образ. Эти записи можно использовать для входа в терминалы, или удалить, изменить, заменить непосредственно в образе. Если после создания образа толстого клиента на сервере LTSP добавляются или удаляются пользователи, то изменения в составе пользователей необходимо зарегистрировать в образе, для чего выполнить команду:

sudo ltsp-update-image

  1. Либо создать сразу образ толстого клиента, используя опцию —fat-client-desktop, определяющую название пакета — программы рабочего стола:

    sudo ltsp-build-client --fat-client-desktop fly-wm ...

    В примере в опции —fat-client-desktop  использован стандартный менеджер окон Astra Linux — fly-wm (не путать с дисплейным менеджером fly-dm и файловым менеджером fly-fm);

    Для Astra Linux Special Edition 1.7 команда сборки толстого клиента может выглядеть так:

  2. Либо использовать ранее созданный образ тонкого клиента, установить в него основные пакеты графического менеджера Fly:

    sudo ltsp-chroot -m apt install fly-all-main

    Параметр -m включает автоматическое монтирование каталогов, необходимых для корректной установки или удаления пакетов.
    При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру —chroot команды ltsp-build-client);

  3. Аналогично, с помощью команды ltsp-chroot -m apt install установить в созданный образ опциональные метапакеты (или же необходимые пакеты по отдельности):
    • Метапакет fly-all-optional — включает в себя пакеты: ark, clementine, compton, fly-admin-iso, fly-fm-crypt, gparted, guvcview, kgpg, librsvg2-bin, qapt-deb-installer, qbat, recoll, speedcrunch, synaptic, vlc, vlc-astra, vlc-l10n, vlc-plugin-access-extra, xca, yelp;
    • Метапакет fly-all-games — включает в себя пакеты (игры) klines, kmines, kpat, supertux, warzone2100, xonotic;
    • Пакет libreoffice — кроссплатформенный, свободно распространяемый офисный пакет с открытым исходным кодом;
    • Другие необходимые пакеты;
  4. Если был установлен дисплейный менеджер fly-dm (не путать с оконным менеджером fly-wm и файловым менеджером fly-fm), то запретить его автоматический запуск:

    sudo ltsp-chroot -m systemctl disable fly-dm

    При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру —chroot команды ltsp-build-client);

  5. Если в chroot-окружение вносились изменений, то обновить ранее собранный образ клиента:

    sudo ltsp-update-kernels <название_каталога> && sudo ltsp-update-image <название_каталога>

    где указать название каталога, в котором находятся файлы для сборки (каталог указывается относительно каталога /opt/ltsp/). Если не указать ничего — то будет использована архитектура amd64, т.е. будет использован  каталог, принятый по умолчанию — /opt/ltsp/amd64/)

  1. Удаленные подключения к тонким клиентам невозможны, так как клиентская сессия выполняется на сервере и не имеет собственного IP-адреса. При наличии полноценной ОС на клиентской машине возможно удаленное подключение к серверу терминалов, функционально схожее с работой тонкого клиента. Настройка таких подключений выполняется на сервере так же, как для любого компьютера под управлением Astra Linux. Также возможно предоставление доступа к рабочему столу активного тонкого клиента. Например, по протоколу VNC с помощью сервера vino (пакет vino должен быть установлен на сервере терминалов), или с помощь других аналогичных технологий;
  2. Удаленное подключение к активным толстым клиентам возможно так же, как и к полноценным компьютерам. Настройка таких подключений выполняется на сервере терминалов, но, в отличие от настройки обычного подключения, не в корневой файловой системе сервера, а в chroot-окружении с последующим переносом изменений в образ толстого клиента;

Подробнее про настройку удаленных подключений для см. Взаимодействие удаленных графических интерфейсов Astra Linux и Windows;

  • Нет меток

Blog

RDP (сокращение «Remote Desktop Protocol») — это проприетарный протокол для доступа к удаленному рабочему столу. По умолчанию он установлен во все современные ОС линейки Windows, однако в качестве сервера может выступать и линукс-система с графическим интерфейсом и установленным пакетом xrdp. В рамках этой статьи мы сосредоточимся на linux rdp клиентах и их настройке, а также рассмотрим основные принципы его работы.

Rdp Клиенты Удаленного Доступа Для Linux

Remote Desktop Protocol

RDP расположен на прикладном уровне сетевой модели OSI и работает на основе протокола транспортного уровня TCP. Схема его работы выглядит следующим образом:

  1. Устанавливается соединение с помощью TCP на транспортном уровне;
  2. Инициализируется сессия RDP;
  3. Аутентифицируется RDP-клиента и согласовываются параметры передачи данных;
  4. Реализуется сеанс удаленной работы: на RDP-клиент получает управление над сервером.

Сервер — это компьютер, К которому происходит удаленное подключение. RDP-клиент — приложение на компьютере, С которого происходит подключение. Во время сессии все вычислительные процессы лежат на плечах сервера. На RDP-клиент поступает графический интерфейс ОС сервера, которой RDP-клиент управляет с помощью устройств ввода. Графический интерфейс на RDP-клиент поступает в виде точной копии графического вывода ОС сервера или в виде графических примитивов (прямоугольники, круги, текст и т.п.) для экономии трафика. По умолчанию RDP использует порт 3389, но его можно поменять при необходимости.

Image3

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

Изначально RDP появился в WIndows NT 4.0. По умолчанию этот протокол предустановлен во всех ОС линейки Windows. Однако реализация Linux remote desktop требует установки специального программного обеспечения.

Для обеспечения безопасности RDP-сессии используются два метода: внутренний и внешний.

Standart RDP Security — это внутренняя подсистема безопасности. Сервер генерирует ключи RSA и сертификат открытого ключа. Во время подключения RDP клиент получает их. В случае подтверждения проводится аутентификация.

Enhanced RDP Security — это метод обеспечения безопасности с помощью внешних средств. Существуют различные способы обеспечения защиты передаваемых данных, например, протокол TLS. 

Плюсы RDP

  • RDP непривередлив к сети: он может работать через VPN, NAT, по TCP или UDP. Поддерживает переадресацию и т.п. Также RDP устойчив к разрывам связи;
  • Для работы достаточно 300-500 кбит скорости;
  • Мощный сервер позволяет запускать на слабом RDP-клиенте тяжелые приложения;
  • Возможность сеанса подключения linux rdp to windows.

Минусы RDP

  • Использование приложений, требовательных к пингу (времени отклика), такие, как игры или просмотр видео, может быть затруднено;
  • Требование к стабильности сервера;
  • Передача данных (файлов, документов) между rdp-клиентом и сервером из-за скорости интернета может быть усложнена.

Настройка RDP-сервера на Windows

Наиболее распространенный сценарий использования RDP — подключение к выделенному Windows-серверу с компьютера, работающего под другой системой, например с помощью linux-клиента.

Выгодно арендовать выделенный сервер можно на cloud.timeweb.com

Чтобы сделать удаленный доступ с клиента в принципе возможным, необходимо правильно настроить целевое устройство. Сама настройка довольно простая — все должно работать «из коробки» во всех современных Windows системах (в большинстве редакций). Как уже упоминалось, rdp клиент windows также предустановлен в большинстве современных систем.

Сначала разрешаем подключение к компьютеру через RDP. Делается это во вкладке Удаленный доступ в Свойствах системы:

Image1

Также тут можно выбрать пользователей, у которых будет доступ (по умолчанию только у администратора). 

Не лишним будет проверить настройки брандмауэра, который может блокировать соединение. В некоторых системах профиль «Общий» и «Частный» для входящих подключений RDP по умолчанию выключен, и, если сервер не входит в домен, то RDP работать не будет. Поэтому переходим в Брандмауэр Windows->Разрешенные приложения и ставим необходимые галочки:

Image8

Если система находится за роутером, то возможно понадобится настройка портов. Сделать это можно через веб-интерфейс роутера в разделе Port Forwarding (зависит от модели роутера). Напомним, что RDP использует порт TCP 3389 по умолчанию.

RDP-клиенты для linux

rdesktop

Сайт: rdesktop.org

Rdesktop linux  — это свободный, легкий и надежный RDP-клиент (лицензия GPL), доступный для Linux, BSD и Microsoft Windows. Реализует большинство функций RDP 5: кеширование bitmap, сжатие и шифрование потоков, автоматическую аутентификацию, RemoteApp, NLA. Также поддерживает RDP 4.0, используемый в Windows NT 4.0 Terminal Server Edition и Windows 2000 Server.

Содержится в репозиториях многих дистрибутивов, так что скачать и установить ubuntu rdp client или debian rdp client можно с помощью пакетного менеджера. Например, в Ubuntu это делается командой:

sudo apt install rdesktop

Подключение и настройка происходит полностью в командной строке. Формат rdp команды:

rdesktop [опция] сервер[:порт] 

Опции:

  • -u — логин юзера удаленной машины;
  • -p — пароль юзера удаленной машины;
  • -f — запуск в полноэкранном режим;
  • -g — в окне с разрешением (WIDTHxHEIGHT).

Остальные ключи можно посмотреть в man.

Подключение к Windows Server 2012 с помощью rdesktop

remmina

Сайт: remmina.org 

Remmina linux — программа-клиент удаленного рабочего стола с графическим интерфейсом, написанная на GTK+. Идет под лицензией GPL. Помимо RDP, remmina работает также с протоколами VNC, NXM XDMCP, SPICE, X2Go и SSH.

Одной из главных особенностей является расширение возможностей с помощью плагинов, например добавление поддержки новых протоколов. Поэтому при базовой установке в настройках remmina вы не найдете RDP. Для этого нужно установить дополнительный плагин (пакет freerdp). После этого перезагрузите программу, и RDP станет доступным из меню.

Для добавления нового соединения нажмите выделенную кнопку:

Image2

Далее откроется окно с настройкой подключения. Здесь раскрывается еще один плюс Remmina — возможность гибкой настройки (скорость и качество отображения, фоновый рисунок, горячие клавиши, темы оформления, анимации и т.д.). Не волнуйтесь, для обычного подключения вам нужно знать лишь данные пользователя удаленной машины и IP-адрес:

Image5

Сохраняем настройку. Теперь мы можем подключаться к нужной машине в два клика из главного меню:

Image6

Если возникла необходимость запуска remmina на windows, то на официальном сайте есть соответствующий гайд.

FreeRDP

Сайт: freerdp.com 

FreeRDP — форк проекта rdesktop, распространяемый под лицензией Apache. В отличие от своего прародителя, который в последний раз обновлялся в 2019 году, FreeRDP активно поддерживается создателями.

FreeRDP является терминальным клиентом. Запуск и настройка происходят полностью в командной строке. Структура команды и ключи практически такие же, как и у rdesktop, например:

xfreerdp -u USERNAME -p PASSWORD -g WIDTHxHEIGHT IP

С помощью этой команды происходит подключение к серверу по адресу IP под именем USERNAME с паролем PASSWORD с отображением рабочего стола в окне:

Подключение c помощью freerdp

Apache Guacamole

Сайт: guacamole.apache.org

Самый простой и при этом самый сложный вариант удаленного управления linux. Простой, потому что не нужно никаких программ, сервисов и клиентов — все работает прямо в браузере. Сложный, потому что для функционирования требуется один раз установить и сконфигурировать сервер.

Apache Guacamole — это клиентский шлюз для удаленного подключения, работающий на HTML5. Он позволяет использовать целый набор протоколов удаленного доступа: Telnet, SSH, VNC, RDP — через веб-интерфейс. Документация по установке и конфигурации сервиса очень внушительна, однако на просторах Интернета есть множество готовых скриптов, которые автоматически помогут сделать базовую конфигурацию.

Скачиваем скрипт установки:

wget https://git.io/fxZq5 -O guac-install.sh

Делаем файл исполняемым:

chmod +x guac-install.sh

Запускаем:

./guac-install.sh

После установки скрипт выдаст адрес для подключения и пароль. Чтобы подключиться к серверу Windows через RDP, в панели администрирования заходим в «Настройки», выбираем «Подключения» и создаем новое:

Image7

Так как для RDP нужно знать лишь данные пользователя на удаленной машине и IP-адрес, вводим минимально нужное количество информации:

Image11

Теперь на главной странице доступно настроенное подключение, через которое мы можем получить удаленный рабочий стол:

Image9

Заключение

RDP протокол — это удобное средство для подключения к удаленной машине под управлением Windows или Linux-системы с графическим интерфейсом. Сервер практически не требует настроек, кроме пары галочек и конфигурации брандмауэра, а клиентские программы радуют своим разнообразием.

Понравилась статья? Поделить с друзьями:
  • Аналог стерео микшера в windows 10
  • Аналог сс cleaner для windows 10
  • Аналог программы ножницы для windows 11
  • Аналог программы ccleaner для windows 10
  • Аналог правой кнопки мыши на клавиатуре windows