FreeNX: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показано 16 промежуточных версий 6 участников)
Строка 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, затем вводим пароль суперпользователя. Затем набираем
<code>
<pre>
     service sshd start
     service sshd start
     chkconfig sshd on
     chkconfig sshd on
</code>
</pre>
SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы.
SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы.
Проверим, включён ли у вас официальный репозиторий. После этого вводим строку kwrite /etc/apt/sources.list. Откроется файл, в котором должны быть следующие строки:
 
<code>
В случае серверной установки Altlinux sshd обычно уже настроен для автоматического запуска.
    rpm <nowiki>ftp://</nowiki>ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch/ i586 classic
 
    rpm <nowiki>ftp://</nowiki>ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch/ noarch classic
==== Установка пакетов ====
</code>
 
Если этих строк нет, то добавьте их.
Проверим, включён ли у вас официальный репозиторий. Для этого смотрим содержимое файлов /etc/apt/sources.list и /etc/apt/sources.list.d/* - в консоли от имени суперпользователя выполняем команду <tt>grep -vE '^(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/*</tt>:
Далее необходимо обновить ваш список пакетов. Сохраняемся и выходим из редактора, в консоли от имени суперпользователя набираем apt-get update. С официального сервера ALT Linux загрузится список всех содержащихся там пакетов.
# 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
<code>
/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 метода сжатия нам необходимо обновиться. Для этого от имени суперпользователя набираем следующие строки:
<pre>
     apt-get install ‘rpm>=4.0.4-alt93′
     apt-get install ‘rpm>=4.0.4-alt93′
     apt-get --reinstall update
     apt-get --reinstall update
</code>
</pre>


Затем вводим следующую строку для установки пакетов nx:
Затем вводим следующую строку для установки пакетов nx:
<code>
<pre>
     apt-get install nx freenx-server
     apt-get install freenx-server
</code>
</pre>
Система управления пакетами скачает и установит все необходимые программы.
Система управления пакетами скачает и установит все необходимые программы.
В случае серверной установки Altlinux также нужно установить окружение рабочего стола. Во FreeNX имеется поддержка KDE, Gnome и CDE.


После этого нам остается завершить установку командой
После этого нам остается завершить установку командой
<code>
<pre>
     service freenx-server setup
     /etc/init.d/freenx-server setup
</code>
</pre>
 
При этом выполнится скрипт <tt>/usr/bin/nxsetup</tt> с параметром <tt>--install</tt> и настроит FreeNX. Скрипт спросит, использовать для сервера "общий" ключ NoMachine или локальный и порекомендует использовать общий. Если подключения будут производиться из разных мест, лучше выполнить рекомендацию и использовать общий ключ. Тогда пользователи смогут подключаться, используя клиент от NoMachine без дополнительной настройки:
<pre>
        ------> 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
</pre>


и проверить
''В P7 при первом запуске <tt>/etc/init.d/freenx-server start</tt> выполнится полная настройка с немного другими параметрами, там требуется меньше действий.''
<code>
 
     service freenx-server check
Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения "Warning:" можно проигнорировать (см. ниже).
</code>
 
Повторно проверить настройки и совместимость с другими компонентами можно командой
<pre>
     /etc/init.d/freenx-server check
</pre>
или
<pre>
    nxloadconfig --check
</pre>


Если в терминале выведется нечто вроде
Если в терминале выведется нечто вроде
 
<pre>
<code>
     ----> Testing your nxserver configuration ...
     ----> Testing your nxserver configuration ...
     Warning: Invalid value "CUPS_ETC=/etc/cups/"
     Warning: Invalid value "CUPS_ETC=/etc/cups/"
Строка 64: Строка 102:
     HELLO NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
     HELLO NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
     <--- done
     <--- done
</code>
</pre>
Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему.
Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему.


== Источники ==
==== Особенности ====
* http://www.strangeman.ru/?p=3
* Свежеустановленный freenx-server автоматом может и не запуститься.
* http://www.gnome.org/~markmc/a-look-at-nomachine-nx.html
Первый запуск freenx-server надо сделать из-под рута и вручную, как /etc/init.d/freenx-server start
Пусть сгенерит себе ключи (выдаст характерные сообщения об этом), после первого ручного запуска должен заработать уже автоматом.
 
* Для использования теневого (shadowing) подключения к пользовательским сессиям требуется утилита netstat из пакета net-utils, которая в дистрибутивах P7 по умолчанию не ставится.
Таким образом для теневого подключения на сервере надо выполнить от root:
<pre>
    apt-get update
    apt-get install net-utils
</pre>
 
Если ssh-сервер настроен не на 22, а на другой порт, в файле /etc/nxserver/node.conf.d/00-general.conf следует указать нужный порт:
SSHD_PORT=32
 
* Если запущенный freenx-server не пускает пользователя с сообщением "Ошибка аутентификации" при вводе заведомо верного пароля - не спешите, возможно и это тоже не совсем ошибка.
По умолчанию аутентификация производится через sshd (кстати, sshd должен быть запущен) по ключу. Ключ пользователя в opennx по умолчанию dsa, такие ключи в sshd по умолчанию отключены. Или в /etc/openssh/sshd.config в параметре PubkeyAcceptedKeyTypes добавить ssh-dss, или сгенерить пользователю свой (по умалчанию ssh-keygen генерит rsa), добавить публичный в /var/lib/nxserver/home/.ssh/authorized_keys2, приватный использовать для opennx.


== Хинты ==
== Хинты ==
* Полноэкранный режим (fullscreen mode): [http://thicksliced.blogspot.com/2007/11/nomachine-client-in-fullscreen.html Ctrl-Alt-F]
* Полноэкранный режим (fullscreen mode): [http://thicksliced.blogspot.com/2007/11/nomachine-client-in-fullscreen.html Ctrl-Alt-F]
* [https://wiki.archlinux.org/index.php/FreeNX_%28Русский%29 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.<br> Справка: <tt>nxserver --help</tt>.<br> nxserver позволяет посмотреть список открытых сеансов, закрыть указанный сеанс или все сеансы указанного пользователя, завершить все открытые сеансы, остановить или запустить сервер, отправить сообщение пользователю или всем.


== Проблемы ==
== Проблемы ==
* Если в выводе service freenx-server check вы видите нижеприведенную ошибку, то вам необходимо поставить пакет samba-client.
* Если в выводе service freenx-server check вы видите следующие сообщения
<pre>
<pre>
Warning: "/usr/lib/cups/backend/smb" is not executable.
Warning: "/usr/lib/cups/backend/smb" is not executable.
         Users will not be able to enable printing.
         Users will not be able to enable printing.
</pre>
</pre>
и вы планируете использовать проброс принтеров, то вам необходимо поставить пакет samba-client .
* Если в выводе service freenx-server check вы видите следующие сообщения
<pre>
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.
</pre>
и вы планируете использовать проброс CIFS-ресурсов, то вам необходимо выполнить нижеприведенные команды:
<pre># apt-get install samba-client-control
# control cifsmount public
# control cifsumount public
</pre>
'''ВНИМАНИЕ''': В этом случае монтирование CIFS-ресурсов будет доступно всем пользователям. Проверьте вывод control cifsmount help, возможно, уже появилась возможность задать допуск специальной группе.
: Есть вариант точной выдачи прав простым хаком - создаём группу, задаём эту группу для mount.cifs, выставляем ему SUID и право запуска группе, затем добавляем нужных пользователей в группу:
<pre>groupadd mountcifs
chmod 04710 /sbin/mount.cifs
chown :mountcifs /sbin/mount.cifs
for u in user1 user2 ... ; do usermod -a -G mountcifs $u ; done</pre>
* Если в выводе service freenx-server check вы видите следующее сообщение:
<pre>Warning: Invalid value "COMMAND_SMBUMOUNT_CIFS=/sbin/umount.cifs". You'll not be able to use SAMBA.</pre>
Исправьте значение COMMAND_SMBUMOUNT_CIFS на /bin/umount.
* Если в выводе service freenx-server check вы видите следующее сообщение:
<pre>Warning: Invalid permissions on "/usr/sbin/cupsd". Valid permissions are "755".
        Users will not be able to enable printing.</pre>
Смените права доступа у /usr/sbin/cupsd на предложенные. По умолчанию там 0700.
* На ALT Desktop 4.0 команда lpadmin не понимает имя драйвера в виде
* На ALT Desktop 4.0 команда lpadmin не понимает имя драйвера в виде
<code>
<pre>
  #lpadmin -p HPLaserJet -m foomatic-ppdfile:HP-LaserJet_9040-hpijs.ppd
  #lpadmin -p HPLaserJet -m foomatic-ppdfile:HP-LaserJet_9040-hpijs.ppd
  lpadmin: Unable to copy PPD file!
  lpadmin: Unable to copy PPD file!
</code>
</pre>
Правильный вид
Правильный вид
<code>
<pre>
  #lpadmin -p HPLaserJet -m foomatic:HP-LaserJet_9040-hpijs.ppd
  #lpadmin -p HPLaserJet -m foomatic:HP-LaserJet_9040-hpijs.ppd
</code>
</pre>
Из-за этого на сервере драйвер для принтера не выставляется. Решается в скрипте /usr/bin/nxprint заменой команды у awk
Из-за этого на сервере драйвер для принтера не выставляется. Решается в скрипте /usr/bin/nxprint заменой команды у awk
<code>
<pre>
  с
  с
  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,$2,substr($3,2)) } '
  на
  на
  printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,"foomatic"substr($2,index($2,":")),substr($3,2)) } '
  printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,"foomatic"substr($2,index($2,":")),substr($3,2)) } '
</code>
</pre>
* Если клиенты цепляются с ALT Desktop 4.0, то есть проблема с печатью, т.к. существует бага в dbus 1.0.2, из-за которой у процесса cupsd (на стороне клиента) не закрываются pipe'ы и со времен их кол-во переполняет верхний потолок кол-ва разрешенных открытых файлов [https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/112803]. Апгрейд у клиента пакетов libdbus и dbus из branch 4.0 решает проблему
* Если клиенты цепляются с ALT Desktop 4.0, то есть проблема с печатью, т.к. существует бага в dbus 1.0.2, из-за которой у процесса cupsd (на стороне клиента) не закрываются pipe'ы и со времен их кол-во переполняет верхний потолок кол-ва разрешенных открытых файлов [https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/112803]. Апгрейд у клиента пакетов libdbus и dbus из branch 4.0 решает проблему


== Ссылки ==
== Ссылки ==
Пакеты для ALT Linux (и других дистрибутивов) готовит компания [http://etersoft.ru Etersoft] в рамках разработки продукта [http://wiki.etersoft.ru/RX RX@Etersoft].
* Пакеты для ALT Linux (и других дистрибутивов) готовит компания [http://etersoft.ru Etersoft] в рамках разработки продукта [http://wiki.etersoft.ru/RX RX@Etersoft].
** [http://kb.etersoft.ru/Балансировщик_RX@Etersoft Балансировка нагрузки] терминального сервера
* SSH-вход по ключу и паролю в зависимости от интерфейса: [https://lists.altlinux.org/pipermail/sysadmins/2015-December/037352.html рассылка], [http://forum.altlinux.org/index.php?topic=2659.msg272763#msg272763 форум]
* Интеграция с 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]
* [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}}}}

Текущая версия от 14:30, 29 октября 2019

Установка 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, используя те же учётные записи, что и для локального входа в систему.

Особенности

  • Свежеустановленный freenx-server автоматом может и не запуститься.

Первый запуск freenx-server надо сделать из-под рута и вручную, как /etc/init.d/freenx-server start Пусть сгенерит себе ключи (выдаст характерные сообщения об этом), после первого ручного запуска должен заработать уже автоматом.

  • Для использования теневого (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

  • Если запущенный freenx-server не пускает пользователя с сообщением "Ошибка аутентификации" при вводе заведомо верного пароля - не спешите, возможно и это тоже не совсем ошибка.

По умолчанию аутентификация производится через sshd (кстати, sshd должен быть запущен) по ключу. Ключ пользователя в opennx по умолчанию dsa, такие ключи в sshd по умолчанию отключены. Или в /etc/openssh/sshd.config в параметре PubkeyAcceptedKeyTypes добавить ssh-dss, или сгенерить пользователю свой (по умалчанию ssh-keygen генерит rsa), добавить публичный в /var/lib/nxserver/home/.ssh/authorized_keys2, приватный использовать для opennx.

Хинты

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 решает проблему

Ссылки