Терминальный сервер на Linux - FreeNX от RX@Etersoft - это удалённый рабочий стол и удалённые приложения на CentOS-6

Сервер терминалов или терминальный сервер FreeNX - предоставляет клиентам вычислительные ресурсы (процессорное время, память, дисковое пространство) для решения задач. Терминальный сервер на CentOS FreeNX для клиентов с операционной системой Windows и Linux позволит Вам снизить расходы на администрирование, повысит безопасность, снизит затраты на программное и аппаратное обеспечение.

Терминальный сервер FreeNX RX@Etersoft позволит организовать режим работы, при котором приложения выполняются на сервере, а на рабочие станции передается только изображение. Возможность подключаться как из Linux, так и из MS Windows. Данные не требуется передавать по сети, они обрабатываются там же, где и хранятся - на сервере. За счёт этого достигается высокая производительность работы ПО.

Этапы настойки:

1. Подготовка к установке терминального сервера FreeNX RX@Etersoft
2. Установка терминального сервера FreeNX RX@Etersoft на CentOS
3. Установка клиента в Windows и настройка подключения к терминальному серверу FreeNX RX@Etersoft в режиме -удалённый рабочий стол.
4. Подключения к терминальному серверу FreeNX в режиме одного приложения - rootless-режим
5. Решение проблемы, с использованием трех языковых раскладок в режиме rootless
6. Настройка передачи данных через буфер обмена (clipboard)

Возможно понадобиться отключить SELinux и фаервол Iptables

И ещё Вам понадобиться wget для загрузки пакетов

yum install wget -y

Подготовка к установке терминального сервера FreeNX RX@Etersoft

1. Установка X-ов и графического окружения

Установка графической оболочки GNOME, KDE. Рабочий стол в CentOS, Red Hat.

2. Добавить репозиторий RpmForge

Подключение репозиторев EPEL и RPMForge (RepoForge) в CentOS

Установка терминального сервера FreeNX RX@Etersoft на CentOS-6

1. Установка дополнительных пакетов

yum install audiofile expect nc libXcomposite gtkmm24 -y

Возможно понадобится поставить пакеты и зависимости, если CentOS minimal

yum install libXpm xorg-x11-fonts-misc xorg-x11-font-utils wxGTK cifs-utils

2. Скачать с официального сайта и установить пакеты FreeNX от RX@Etersoft

Ссылки на скачивание могут быть не актуальными, для скачивания последних пакетов, посмотрите их здесь
ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/

CentOS-6
wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/CentOS/6/*.rpm

Для систем x86_64 строка закачки будет следующей:
wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/x86_64/CentOS/6/*rpm

CentOS-5
wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/CentOS/5/*.rpm

Для систем x86_64 строка закачки будет следующей:
wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/x86_64/CentOS/5/*.rpm

У Вас скачаются следующие пакеты, (названия пакетов относительно их актуальности и разрядности системы):

nx-3.5.1-eter6scientific.i586.rpm 
nxclient-3.5.0.7-eter4scientific.i586.rpm
nxsadmin-0.2.1-eter5scientific.i586.rpm
rx-etersoft-1.1.2-eter2scientific.i586.rpm

3. Установка пакетов терминального сервера FreeNX RX@Etersoft

rpm -Uv nx-3.5.1-eter6scientific.i586.rpm
rpm -Uv nxclient-3.5.0.7-eter4scientific.i586.rpm
rpm -Uv nxsadmin-0.2.1-eter5scientific.i586.rpm
rpm -Uv rx-etersoft-1.1.2-eter2scientific.i586.rpm

Или как Вам удобно

rpm -ivh nx*rpm
rpm -ivh rx*rpm

Для систем RedHat 6.4 команда yum install nx*rpm может закончиться ошибкой из-за невозможности поставить графическую утилиту подключений, пакет nxsadmin, этот пакет ставить необязательно.

rpm -ivh nx-*.rpm
rpm -ivh nxclient*.rpm
rpm -ivh rx-etersoft*.rpm

На момент написания этой статьи, последняя версия rx-etersoft-1.1.3. Сборки можно использовать бесплатно и без ограничений, но перед стартом терминальной сессии будет каждый раз появляться предупре­ждение об отсутствующем файле лицензии с предложением приобрести её. Что бы от этого избавиться, файл /usr/bin/nxnode заменить отсюда (http://git.etersoft.ru/people/dimbor/packages/?p=freenx-server.git;a=tree), а я на всякий случай, оставил его себе на память здесь

4. Запустить скрипт настройки

rxsetup

5. Восстановление контекста SELinux по умолчанию (при необходимости, у меня SELinux выключен)

restorecon -Rv /var/lib/nxserver/

6. Создать пользователя в системе

useradd alex; echo alex12 |passwd --stdin alex

Установка клиента в Windows и настройка подключения к терминальному серверу FreeNX RX@Etersoft в режиме -удалённый рабочий стол.

Для Windows используется клиентская программа OpenNX или NX Client.

Скачть NX Client или OpenNX можно здесь (ftp://ftp.etersoft.ru/pub/Etersoft/RX@Etersoft/)

Кроме этого OpenNX можно скачать на их официальном сайте (http://opennx.net/download.html)

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

Вкладка «Общее» содержит все основные настройки подключения: имя/адрес сервера, порт, среду, в которой производится вход в систему. Установка флажка под именем сервера позволит сохранить пароль пользователя во избежание его постоянного ввода при последующих подключениях. Для подключения к linux-серверу с GNOME нужно выбрать UNIX — GNOME. Регулятор скорости соединения позволяет выбрать скорость канала, ориентируясь на тип подключения - от модема до локальной сети. Секция «Display and Keyboard» устанавливает размеры экрана: всё доступное пространство - отличный выбор.

На других вкладках подробно останавливаться не буду, есть простор для экспериментов

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

Подключения к терминальному серверу FreeNX в режиме одного приложения - rootless-режим. 

С помощью RX@Etersoft можно организовать режим работы, в котором на сервере запускается только одна программа. Пользователь запускает программу с ярлыка на рабочем столе, и она у него открывается в его рабочем сеансе, представляя собой обычное окно. На самом же деле происходит подключение к серверу и запуск программы на нём, а на рабочий стол пользователя выводится только окно с запущенной программой. Это удобно, когда мощность сервера ограничена и предназначен для выполнения специализированных задач, например, для запуска программы Mozilla Firefox.

Для организации rootless-режима в настройках opennx указывается сочетание UNIX — Пользователь и задаётся выполнение команды, стартующей программу на сервере.

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

Пишем скрипт и сохраняем в /bin/runff.sh

#!/bin/bash
/bin/bash << EOF
#Задаем модель клавиатуры, ее раскладки и последовательность их смены
/usr/bin/setxkbmap -model pc105 -layout us,ua,ru
/usr/bin/setxkbmap -model pc105 –variant
#Переключение раскладок ctrl+shift
/usr/bin/setxkbmap -model pc105 -option -option grp:ctrl_shift_toggle
# Запуск браузера Firefox 
firefox
EOF

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

Разрешаем доступ и запуск для всех:

chmod 777 /bin/runff.sh

Решение проблемы, с использованием трех языковых раскладок в режиме rootless.

Проблема была на CentOS-5. В CentOS-6 этой проблемы не наблюдал

При использовании двух раскладок клавиатуры скрипт runff.sh работает нормально. При использовании четырех раскладок, языки переключается но не в той последовательности, но с тремя раскладками языки не переключаются совсем. Решаем проблему трёх языков.

Редактируем файл /usr/share/X11/xkb/symbols/group

Находим в нем секцию:

xkb_symbols "ctrl_shift_toggle" {
    key <LFSH> {
    type="PC_BREAK",
 symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
    };
    key <RTSH> {
    type="PC_BREAK",
    symbols[Group1]= [ Shift_R,    ISO_Next_Group ]
    };
    key <LCTL>    {    [    Control_L,    ISO_Prev_Group ]    };
    key <RCTL>    {    [    Control_R,    ISO_Next_Group ]    };
};

и меняем ISO_Prev_Group на ISO_Next_Group, вот так

xkb_symbols "ctrl_shift_toggle" {
    key <LFSH> {
    type="PC_BREAK",
 symbols[Group1]= [ Shift_L, ISO_Next_Group ]
    };
    key <RTSH> {
    type="PC_BREAK",
    symbols[Group1]= [ Shift_R,    ISO_Next_Group ]
    };
    key <LCTL>    {    [    Control_L,    ISO_Next_Group ]    };
    key <RCTL>    {    [    Control_R,    ISO_Next_Group ]    };
};

Сохранить изменения и перезапустить иксы.

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

Настройка передачи данных через буфер обмена (clipboard) 

В файле /etc/nxserver/node.conf.d/02-restriction.conf секция
# Enable or disable clipboard:

По умолчанию разрешить буфер обмена между клиентом и терминальным сервером
ENABLE_CLIPBOARD="both"

Разрешить передачу данных через буфер обмена (clipboard) только от клиента на терминальный сервер
ENABLE_CLIPBOARD="client"

Разрешить передачу данных через буфер обмена (clipboard) только от терминального сервера клиенту
ENABLE_CLIPBOARD="server"

Зпретить передачу данных через буфер обмена (clipboard) от клиента на терминальный сервер и наоброт
ENABLE_CLIPBOARD="none"