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

Материал из ALT Linux Wiki
Нет описания правки
 
(не показаны 22 промежуточные версии 8 участников)
Строка 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>


* '''NB:''' нижеследующий абзац может оказаться ''последним'' для системы на базе Desktop 4.0, надо будет сделать бэкпорт freenx и поместить в 4.0/branch (как вариант — можно взять src.rpm и {{cmd|rpm --rebuild}} их локально)
Затем вводим следующую строку для установки пакетов nx:
<pre>
    apt-get install freenx-server
</pre>
Система управления пакетами скачает и установит все необходимые программы.


К сожалению, пакеты nx и freenx отсутствуют в официальном репозитории ALT Linux, поэтому нам придётся подключить репозиторий Sisyphus. Для этого снова открываем файл sources.list с помощью kwrite /etc/apt/sources.list и добавляем туда строки
В случае серверной установки Altlinux также нужно установить окружение рабочего стола. Во FreeNX имеется поддержка KDE, Gnome и CDE.
<code>
    rpm [alt] <nowiki>ftp://</nowiki>ftp.altlinux.ru/pub/distributions/ALTLinux/Sisyphus/ i586 classic
    rpm [alt] <nowiki>ftp://</nowiki>ftp.altlinux.ru/pub/distributions/ALTLinux/Sisyphus/ noarch classic
</code>
Затем вводим следующие строки:
<code>
    apt-get update
    apt-get install nx freenx
</code>
Система управления пакетами скачает и установит все необходимые программы.


После этого нам остается завершить установку командой
После этого нам остается завершить установку командой
<code>
<pre>
     nxsetup --install --setup-nomachine-key
     /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> выполнится полная настройка с немного другими параметрами, там требуется меньше действий.''
 
Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения "Warning:" можно проигнорировать (см. ниже).
 
Повторно проверить настройки и совместимость с другими компонентами можно командой
<pre>
    /etc/init.d/freenx-server check
</pre>
или
<pre>
    nxloadconfig --check
</pre>
 
Если в терминале выведется нечто вроде
Если в терминале выведется нечто вроде
<code>
<pre>
     -> Testing your nxserver connection ...
     ----> Testing your nxserver configuration ...
     HELLO NXSERVER - Version 2.1.0-73-SVN OS (GPL, using backend: 3.2.0)
    Warning: Invalid value "CUPS_ETC=/etc/cups/"
    NX> 105 quit
            Users will not be able to enable printing.
    Quit
    Warning: Invalid value "COMMAND_START_CDE=cdwm"
    NX> 999 Bye
            Users will not be able to request a CDE session.
     <done
    Warning: Invalid cupsd version of "/usr/sbin/cupsd". Need version 1.2.
    Ok, nxserver is ready.
            Users will not be able to enable printing. Ignore if you use cups > 1.2
    PAM authentication enabled:
      Warnings occured during config check.
    All users will be able to login with their normal passwords.
      To enable these features please correct the configuration file.
    PAM authentication will be done through SSH.
    <---- done
    Please ensure that SSHD on localhost accepts password authentication.
    ----> Testing your nxserver connection ...
    You can change this behaviour in the /etc/nxserver/node.conf file.
     HELLO NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
    Have Fun!
     <--- 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 вы видите следующие сообщения
<pre>
Warning: "/usr/lib/cups/backend/smb" is not executable.
        Users will not be able to enable printing.
</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}}}}

Текущая версия от 11: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 решает проблему

Ссылки