FreeNX: различия между версиями
(Доработка статьи для P7) |
|||
Строка 1: | Строка 1: | ||
{{h0|Установка freenx сервера терминалов на ALT Linux Desktop. От «А» до «Я»}} | {{h0|Установка freenx сервера терминалов на ALT Linux Desktop. От «А» до «Я»}} | ||
Цель данной статьи — описать типовой процесс создания сервера терминалов с учётом особенностей ОС ALT Linux Desktop. В данном посте изложен мой личный опыт, ни в коем случае не претендующий на академичность. Я просто хочу немного систематизировать те разрозненные куски информации на тему «FreeNX+ALT Linux», что имеются в глобальной сети. | Цель данной статьи — описать типовой процесс создания сервера терминалов с учётом особенностей ОС ALT Linux Desktop. | ||
В данном посте изложен мой личный опыт, ни в коем случае не претендующий на академичность. Я просто хочу немного систематизировать те разрозненные куски информации на тему «FreeNX+ALT Linux», что имеются в глобальной сети. — [[Участник:Strangeman|Strangeman]] | |||
На настоящий момент статья доработана другими участниками. | |||
== Немного теории == | == Немного теории == | ||
Строка 10: | Строка 14: | ||
Основной идеей протокола NX является дифференциальное сжатие данных X-сервера и уменьшение количества передаваемых данных с помощью прокси-сервера. Идея дифференциального сжатия изначально была реализована в протоколе DXPC (Дифференциальный Компрессор X-Протокола), в 1995 году. На основе этих разработок компания [http://www.nomachine.com NoMachine] создала свой коммерческий (но в основной массе открытый) продукт. Также существует полностью открытая и бесплатная реализация NX — [http://freenx.berlios.de FreeNX]. Мы будем использовать именно FreeNX. | Основной идеей протокола NX является дифференциальное сжатие данных X-сервера и уменьшение количества передаваемых данных с помощью прокси-сервера. Идея дифференциального сжатия изначально была реализована в протоколе DXPC (Дифференциальный Компрессор X-Протокола), в 1995 году. На основе этих разработок компания [http://www.nomachine.com NoMachine] создала свой коммерческий (но в основной массе открытый) продукт. Также существует полностью открытая и бесплатная реализация NX — [http://freenx.berlios.de FreeNX]. Мы будем использовать именно FreeNX. | ||
=== Установка FreeNX | === Как это работает === | ||
Я не буду останавливаться на установке самого ALT Linux’а. Если нужно подробное руководство, то можно найти его, например, [http://heap.altlinux.org/alt-docs/desktop_personal/install_desktop/index.html здесь] . | |||
При подключении программы-клиента к серверу NX происходит подключение по протоколу ssh под пользователем nx с авторизацией по ключу, при этом запускается скрипт, который в свою очередь организует подключение по ssh к localhost под пользователем и паролем, указанным клиентом в настройках подключения. | |||
== Установка FreeNX == | |||
Я не буду останавливаться на установке самого ALT Linux’а. Если нужно подробное руководство, то можно найти его, например, [http://heap.altlinux.org/alt-docs/desktop_personal/install_desktop/index.html здесь]. | |||
==== SSH сервер ==== | |||
Итак, будем считать, что у вас на компьютере установлен ALT Linux Personal Desktop версии 4.0.* (у меня стоит 4.0.2). Компьютер также должен иметь выход в Интернет. | Итак, будем считать, что у вас на компьютере установлен ALT Linux Personal Desktop версии 4.0.* (у меня стоит 4.0.2). Компьютер также должен иметь выход в Интернет. | ||
Для начала запустим ssh-сервер, по каналу которого и происходит обмен данными между сервером и клиентами nx. Для этого в терминале набираем su, затем вводим пароль суперпользователя. Затем набираем | Для начала запустим ssh-сервер, по каналу которого и происходит обмен данными между сервером и клиентами nx. Для этого в терминале набираем su, затем вводим пароль суперпользователя. Затем набираем | ||
Строка 19: | Строка 29: | ||
</code> | </code> | ||
SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы. | SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы. | ||
Проверим, включён ли у вас официальный репозиторий. | |||
< | В случае серверной установки Altlinux sshd обычно уже настроен для автоматического запуска. | ||
==== Установка пакетов ==== | |||
Если | Проверим, включён ли у вас официальный репозиторий. Для этого смотрим содержимое файлов /etc/apt/sources.list и /etc/apt/sources.list.d/* - в консоли от имени суперпользователя выполняем команду <tt>grep -vE '^(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/*</tt>: | ||
Далее необходимо обновить ваш список пакетов. | # grep -vE '^(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/* | ||
ПО для ALT Linux поставляется в виде *.rpm — пакетов. Сравнительно недавно у этих пакетов поменялся метод сжатия. Для поддержки нового LZMA метода сжатия нам необходимо обновиться. Для этого от имени суперпользователя набираем следующие строки: | /etc/apt/sources.list.d/alt.list:rpm [p7] http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch x86_64 classic | ||
/etc/apt/sources.list.d/alt.list:rpm [p7] http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch x86_64-i586 classic | |||
/etc/apt/sources.list.d/alt.list:rpm [p7] http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch noarch classic | |||
Если в выводе команды нет строк rpm…, раскомментируйте их в файле /etc/apt/sources.list.d/alt.list. | |||
Далее необходимо обновить ваш список пакетов. В консоли от имени суперпользователя выполняем команду <tt>apt-get update</tt>. С сервера ALT Linux загрузится список всех содержащихся там пакетов. | |||
ПО для ALT Linux поставляется в виде *.rpm — пакетов. | |||
: Касается только Altlinux 4.0. Сравнительно недавно у этих пакетов поменялся метод сжатия. Для поддержки нового LZMA метода сжатия нам необходимо обновиться. Для этого от имени суперпользователя набираем следующие строки: | |||
<code> | <code> | ||
apt-get install ‘rpm>=4.0.4-alt93′ | apt-get install ‘rpm>=4.0.4-alt93′ | ||
Строка 34: | Строка 52: | ||
Затем вводим следующую строку для установки пакетов nx: | Затем вводим следующую строку для установки пакетов nx: | ||
<code> | <code> | ||
apt-get install | apt-get install freenx-server | ||
</code> | </code> | ||
Система управления пакетами скачает и установит все необходимые программы. | Система управления пакетами скачает и установит все необходимые программы. | ||
В случае серверной установки Altlinux также нужно установить окружение рабочего стола. Во FreeNX имеется поддержка KDE, Gnome и CDE. | |||
После этого нам остается завершить установку командой | После этого нам остается завершить установку командой | ||
Строка 43: | Строка 63: | ||
</code> | </code> | ||
При этом выполнится скрипт | При этом выполнится скрипт <tt>/usr/bin/nxsetup</tt> с параметром <tt>--install</tt> и настроит FreeNX. Скрипт спросит, использовать для сервера "общий" ключ NoMachine или локальный и порекомендует использовать общий. Если подключения будут производиться из разных мест, лучше выполнить рекомендацию и использовать общий ключ. Тогда пользователи смогут подключаться, используя клиент от NoMachine без дополнительной настройки: | ||
<code> | <code> | ||
------> It is recommended that you use the NoMachine key for | ------> It is recommended that you use the NoMachine key for | ||
Строка 54: | Строка 74: | ||
</code> | </code> | ||
Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения "Warning:" можно проигнорировать. | ''В P7 при первом запуске <tt>/etc/init.d/freenx-server start</tt> выполнится полная настройка с немного другими параметрами, там требуется меньше действий.'' | ||
Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения "Warning:" можно проигнорировать (см. ниже). | |||
Повторно проверить настройки и совместимость с другими компонентами можно командой | Повторно проверить настройки и совместимость с другими компонентами можно командой | ||
Строка 66: | Строка 88: | ||
Если в терминале выведется нечто вроде | Если в терминале выведется нечто вроде | ||
<code> | <code> | ||
----> Testing your nxserver configuration ... | ----> Testing your nxserver configuration ... | ||
Строка 84: | Строка 105: | ||
Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему. | Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему. | ||
==== | ==== Особенности ==== | ||
Для использования теневого (shadowing) подключения к пользовательским сессиям требуется утилита netstat из пакета net-utils, которая в дистрибутивах P7 по умолчанию не ставится. | Для использования теневого (shadowing) подключения к пользовательским сессиям требуется утилита netstat из пакета net-utils, которая в дистрибутивах P7 по умолчанию не ставится. | ||
Таким образом для теневого подключения на сервере надо выполнить от root: | Таким образом для теневого подключения на сервере надо выполнить от root: | ||
<code> | <code> | ||
apt-get update | apt-get update | ||
Строка 93: | Строка 113: | ||
</code> | </code> | ||
Если ssh-сервер настроен не на 22, а на другой порт, в файле /etc/nxserver/node.conf.d/00-general.conf следует указать нужный порт: | |||
SSHD_PORT=32 | |||
== Хинты == | == Хинты == | ||
Строка 117: | Строка 136: | ||
|CTRL+ALT+Shift+ESC || Экстренный выход и закрытие окна. | |CTRL+ALT+Shift+ESC || Экстренный выход и закрытие окна. | ||
|} | |} | ||
== Управление сессиями == | |||
* GUI: утилита nxsadmin. | |||
* Командная строка: команда nxserver.<br> Справка: <tt>nxserver --help</tt>.<br> nxserver позволяет посмотреть список открытых сеансов, закрыть указанный сеанс или все сеансы указанного пользователя, завершить все открытые сеансы, остановить или запустить сервер, отправить сообщение пользователю или всем. | |||
== Проблемы == | == Проблемы == | ||
Строка 172: | Строка 196: | ||
* Интеграция с Active Directory: [http://alex.mamchenkov.net/2006/09/14/freenx-and-ms-active-directory/], [https://www.nomachine.com/ar02e00442] | * Интеграция с Active Directory: [http://alex.mamchenkov.net/2006/09/14/freenx-and-ms-active-directory/], [https://www.nomachine.com/ar02e00442] | ||
* Клиент для Windows: [https://turing.une.edu.au/~comp131/FAQs/nxclient/ NX-CLIENT: Graphical remote desktop connection to turing] | * Клиент для Windows: [https://turing.une.edu.au/~comp131/FAQs/nxclient/ NX-CLIENT: Graphical remote desktop connection to turing] | ||
* [https://people.gnome.org/~markmc/a-look-at-nomachine-nx.html A Brief Look At NoMachine NX] | |||
* [https://habrahabr.ru/sandbox/46187/ RX@Etersoft: создание терминального сервера шаг за шагом] | |||
[[Категория:Utils]] | [[Категория:Utils]] | ||
{{Category navigation|title=Руководства|category=Руководства|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Руководства|category=Руководства|sortkey={{SUBPAGENAME}}}} |
Версия от 16:04, 6 июня 2016
Установка freenx сервера терминалов на ALT Linux Desktop. От «А» до «Я»
Цель данной статьи — описать типовой процесс создания сервера терминалов с учётом особенностей ОС ALT Linux Desktop.
В данном посте изложен мой личный опыт, ни в коем случае не претендующий на академичность. Я просто хочу немного систематизировать те разрозненные куски информации на тему «FreeNX+ALT Linux», что имеются в глобальной сети. — Strangeman
На настоящий момент статья доработана другими участниками.
Немного теории
Описание протокола NX
Описание протокола NX на www.gnome.org. Не пинайте за перевод. :)
Основной идеей протокола NX является дифференциальное сжатие данных X-сервера и уменьшение количества передаваемых данных с помощью прокси-сервера. Идея дифференциального сжатия изначально была реализована в протоколе DXPC (Дифференциальный Компрессор X-Протокола), в 1995 году. На основе этих разработок компания NoMachine создала свой коммерческий (но в основной массе открытый) продукт. Также существует полностью открытая и бесплатная реализация NX — FreeNX. Мы будем использовать именно FreeNX.
Как это работает
При подключении программы-клиента к серверу NX происходит подключение по протоколу ssh под пользователем nx с авторизацией по ключу, при этом запускается скрипт, который в свою очередь организует подключение по ssh к localhost под пользователем и паролем, указанным клиентом в настройках подключения.
Установка FreeNX
Я не буду останавливаться на установке самого ALT Linux’а. Если нужно подробное руководство, то можно найти его, например, здесь.
SSH сервер
Итак, будем считать, что у вас на компьютере установлен ALT Linux Personal Desktop версии 4.0.* (у меня стоит 4.0.2). Компьютер также должен иметь выход в Интернет.
Для начала запустим ssh-сервер, по каналу которого и происходит обмен данными между сервером и клиентами nx. Для этого в терминале набираем su, затем вводим пароль суперпользователя. Затем набираем
service sshd start
chkconfig sshd on
SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы.
В случае серверной установки Altlinux sshd обычно уже настроен для автоматического запуска.
Установка пакетов
Проверим, включён ли у вас официальный репозиторий. Для этого смотрим содержимое файлов /etc/apt/sources.list и /etc/apt/sources.list.d/* - в консоли от имени суперпользователя выполняем команду grep -vE '^(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/*:
# grep -vE '^(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/* /etc/apt/sources.list.d/alt.list:rpm [p7] http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch x86_64 classic /etc/apt/sources.list.d/alt.list:rpm [p7] http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch x86_64-i586 classic /etc/apt/sources.list.d/alt.list:rpm [p7] http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch noarch classic
Если в выводе команды нет строк rpm…, раскомментируйте их в файле /etc/apt/sources.list.d/alt.list.
Далее необходимо обновить ваш список пакетов. В консоли от имени суперпользователя выполняем команду apt-get update. С сервера ALT Linux загрузится список всех содержащихся там пакетов. ПО для ALT Linux поставляется в виде *.rpm — пакетов.
- Касается только Altlinux 4.0. Сравнительно недавно у этих пакетов поменялся метод сжатия. Для поддержки нового LZMA метода сжатия нам необходимо обновиться. Для этого от имени суперпользователя набираем следующие строки:
apt-get install ‘rpm>=4.0.4-alt93′
apt-get --reinstall update
Затем вводим следующую строку для установки пакетов nx:
apt-get install freenx-server
Система управления пакетами скачает и установит все необходимые программы.
В случае серверной установки Altlinux также нужно установить окружение рабочего стола. Во FreeNX имеется поддержка KDE, Gnome и CDE.
После этого нам остается завершить установку командой
/etc/init.d/freenx-server setup
При этом выполнится скрипт /usr/bin/nxsetup с параметром --install и настроит FreeNX. Скрипт спросит, использовать для сервера "общий" ключ NoMachine или локальный и порекомендует использовать общий. Если подключения будут производиться из разных мест, лучше выполнить рекомендацию и использовать общий ключ. Тогда пользователи смогут подключаться, используя клиент от NoMachine без дополнительной настройки:
------> It is recommended that you use the NoMachine key for
easier setup. If you answer "y", FreeNX creates a custom
KeyPair and expects you to setup your clients manually.
"N" is default and uses the NoMachine key for installation.
Do you want to use your own custom KeyPair? [y/N] N
Setting up /etc/nxserver ...done
В P7 при первом запуске /etc/init.d/freenx-server start выполнится полная настройка с немного другими параметрами, там требуется меньше действий.
Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения "Warning:" можно проигнорировать (см. ниже).
Повторно проверить настройки и совместимость с другими компонентами можно командой
/etc/init.d/freenx-server check
или
nxloadconfig --check
Если в терминале выведется нечто вроде
----> Testing your nxserver configuration ...
Warning: Invalid value "CUPS_ETC=/etc/cups/"
Users will not be able to enable printing.
Warning: Invalid value "COMMAND_START_CDE=cdwm"
Users will not be able to request a CDE session.
Warning: Invalid cupsd version of "/usr/sbin/cupsd". Need version 1.2.
Users will not be able to enable printing. Ignore if you use cups > 1.2
Warnings occured during config check.
To enable these features please correct the configuration file.
<---- done
----> Testing your nxserver connection ...
HELLO NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
<--- done
Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему.
Особенности
Для использования теневого (shadowing) подключения к пользовательским сессиям требуется утилита netstat из пакета net-utils, которая в дистрибутивах P7 по умолчанию не ставится.
Таким образом для теневого подключения на сервере надо выполнить от root:
apt-get update
apt-get install net-utils
Если ssh-сервер настроен не на 22, а на другой порт, в файле /etc/nxserver/node.conf.d/00-general.conf следует указать нужный порт: SSHD_PORT=32
Хинты
- Полноэкранный режим (fullscreen mode): Ctrl-Alt-F
- FreeNX (Русский) — ArchWiki:
CTR+ALT+F | Переключить полноэкранный режим. |
CTRL+ALT+T | Показать диалог завершения или приостановления сессии. |
CTRL+ALT+M | Максимизировать или минимизировать окно. |
CTRL+ALT+Mouse | Drags the viewport, so you can view different portions of the desktop. |
CTRL+ALT+Arrows or CTRL+ALT+Keypad | Moves the viewport by an incremental amount of pixels. |
CTRL+ALT+S | It will activate "screen-scraping" mode, so all the GetImage originated by the clients will be forwarded to the real display. This should make happy those who love taking screenshots ;-). By pressing the sequence again, nxagent will revert to the usual "fast" mode. |
CTRL+ALT+E | Ленивое кодирование изображений. |
CTRL+ALT+Shift+ESC | Экстренный выход и закрытие окна. |
Управление сессиями
- GUI: утилита nxsadmin.
- Командная строка: команда nxserver.
Справка: nxserver --help.
nxserver позволяет посмотреть список открытых сеансов, закрыть указанный сеанс или все сеансы указанного пользователя, завершить все открытые сеансы, остановить или запустить сервер, отправить сообщение пользователю или всем.
Проблемы
- Если в выводе service freenx-server check вы видите следующие сообщения
Warning: "/usr/lib/cups/backend/smb" is not executable. Users will not be able to enable printing.
и вы планируете использовать проброс принтеров, то вам необходимо поставить пакет samba-client .
- Если в выводе service freenx-server check вы видите следующие сообщения
Warning: Invalid permissions on "/sbin/mount.cifs". Valid permissions are "4711". You'll not be able to use SAMBA. Warning: Invalid permissions on "/sbin/umount.cifs". Valid permission are "4711". You'll not be able to use SAMBA.
и вы планируете использовать проброс CIFS-ресурсов, то вам необходимо выполнить нижеприведенные команды:
# apt-get install samba-client-control # control cifsmount public # control cifsumount public
ВНИМАНИЕ: В этом случае монтирование CIFS-ресурсов будет доступно всем пользователям. Проверьте вывод control cifsmount help, возможно, уже появилась возможность задать допуск специальной группе.
- Есть вариант точной выдачи прав простым хаком - создаём группу, задаём эту группу для mount.cifs, выставляем ему SUID и право запуска группе, затем добавляем нужных пользователей в группу:
groupadd mountcifs chmod 04710 /sbin/mount.cifs chown :mountcifs /sbin/mount.cifs for u in user1 user2 ... ; do usermod -a -G mountcifs $u ; done
- Если в выводе service freenx-server check вы видите следующее сообщение:
Warning: Invalid value "COMMAND_SMBUMOUNT_CIFS=/sbin/umount.cifs". You'll not be able to use SAMBA.
Исправьте значение COMMAND_SMBUMOUNT_CIFS на /bin/umount.
- Если в выводе service freenx-server check вы видите следующее сообщение:
Warning: Invalid permissions on "/usr/sbin/cupsd". Valid permissions are "755". Users will not be able to enable printing.
Смените права доступа у /usr/sbin/cupsd на предложенные. По умолчанию там 0700.
- На ALT Desktop 4.0 команда lpadmin не понимает имя драйвера в виде
#lpadmin -p HPLaserJet -m foomatic-ppdfile:HP-LaserJet_9040-hpijs.ppd
lpadmin: Unable to copy PPD file!
Правильный вид
#lpadmin -p HPLaserJet -m foomatic:HP-LaserJet_9040-hpijs.ppd
Из-за этого на сервере драйвер для принтера не выставляется. Решается в скрипте /usr/bin/nxprint заменой команды у awk
с
printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,$2,substr($3,2)) } '
на
printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,"foomatic"substr($2,index($2,":")),substr($3,2)) } '
- Если клиенты цепляются с ALT Desktop 4.0, то есть проблема с печатью, т.к. существует бага в dbus 1.0.2, из-за которой у процесса cupsd (на стороне клиента) не закрываются pipe'ы и со времен их кол-во переполняет верхний потолок кол-ва разрешенных открытых файлов [1]. Апгрейд у клиента пакетов libdbus и dbus из branch 4.0 решает проблему
Ссылки
- Пакеты для ALT Linux (и других дистрибутивов) готовит компания Etersoft в рамках разработки продукта RX@Etersoft.
- Балансировка нагрузки терминального сервера
- SSH-вход по ключу и паролю в зависимости от интерфейса: рассылка, форум
- Интеграция с Active Directory: [2], [3]
- Клиент для Windows: NX-CLIENT: Graphical remote desktop connection to turing
- A Brief Look At NoMachine NX
- RX@Etersoft: создание терминального сервера шаг за шагом