Remote desktop под Linux

"Сидит девица в темнице,
а коса - на улице"

Я сервер себе задумал собрать, да так, чтобы это был просто отдельно стоящий системный блок - без монитора, клавиатуры, мыши... И один из самых первых вопросов, с которым я столкнулся - необходимость управлять им. Естественно, дистанционно, по сети. Выбор свой я остановил на програмном обеспечении NoMachine NX Server от компании Nomachine (сайт - http://www.nomachine.com/). Реализация традиционна для систем дистанционного управления (доступа). На компьютере-сервере запущена программа (т.н. "сервер удаленного доступа"), к которой подключаются машины-клиенты. На сайте компании Nomachine в разделе "Загрузка" предлагается два варианта сервера:
  • NX Server for Linux Evaluation - пробная версия коммерческого (платного) продукта.
  • NX Free Edition for Linux - бесплатная версия.
Комерческая версия по окончании пробного срока перестает работать и говорит, что теперь ее пора либо купить, либо удалить. С другой стороны, основное отличие бесплатной версии от комерческих - в малом количестве маскимально возможных подключений (только два). А мне, собственно, для управления "домашним сервером" больше и не нужно! Поэтому, отправился я качать бесплатную версию. Там размещено примечание. Гласит оно следующее:
Для установки NX Server for Linux необходимо установить три пакета: клиент (client), узел (node) и сервер (server). Клиент необходим, так как в него входят библиотеки, требующиеся узлу. Узел нужен потому, что в него входит инструментарий, необходимый для сервера. Кроме того, на каждом компьютере-сервере NX должен быть установлен и запущен сервер SSH (SSHD), т.к. програмное обеспечение NX использует механизмы, предоставляемые SSH-подсистемой для аутентификации пользователей.
Чтож, надо так надо. Скачиваем все три пакета - клиент, узел и сервер. На момент написания данной статьи это были следующие три файла:
  • nxclient-3.2.0-9.i386.rpm
  • nxnode-3.2.0-5.i386.rpm
  • nxserver-3.2.0-7.i386.rpm
Теперь пакеты нужно установить. Установка пакетов должна осуществляться в строго определенном порядке. Первым необходимо установить клиента. Вторым - узел и уж затем - собственно сервер. Если Вы будете устанавливать пакеты в ином порядке - получите сообщение об ошибке и о том, какой пакет должен был быть уже установлен. Linux Mandriva (который установлен на моем "сервере") позволяет устанавливать пакеты несколькими способами. Можно, например, в графическом режиме (если в системе был установлен пакет gurpmi - графический интерфейс к консольному инсталятору пакетов urpmi). Вот так он выглядит:



Рис. №_1 Графический интерфейс установки пакетов - gurpmi

Запускаем установку пакета "клиент". Установка пакетов (программ) - прерогатива администратора системы. Поэтому, после нажатия кнопки "Установить" Вас попросят ввести пароль пользователя root (администратора). Вводим пароль - пакет установлен. Повторяем еще два раза - для узла и для сервера.

С другой стороны, установка пакетов возможна без использования графических интерфейсов (GUI) - в консоли (командной строке). Выполнить установку можно, например, с помощью команды rpm, или команды urpmi. После стольких лет привыкания народа к GUI это может поначалу показаться дикостью. Но, как я уже сказал ранее, устанавливать программы в систему может только root. Более того, по окончании установки NX-сервера нам нужно будет его еще запустить и настроить. А настройка программы также относится к числу административных задач, и для данного сервиса выполняется в консоли от имени "супер"-пользователя root (администратора). С другой стороны, в консоли стать суперпользователем можно всего одной командой - причем, раз и до конца сеанса. Итак, запускаем консоль. Для этого мышью кликаем: "Меню" -> "Утилиты" -> "Консоль". При этом, в консоль мы сначала попадаем с правами рядового пользователя (от имени которого мы, собственно, вошли в систему). В приведенных ниже примерах я описываю свои действия на своем "сервере". Мое имя пользователя - dmitry, а имя моего сервера - smb-svr. И это отчетливо видно по приглашению командного интерпретатора (консоли) - в нем до "собаки" (символа "@") указано имя текущего пользователя, после - имя (текущего) компьютера, а затем через пробел - имя текущего каталога. В моем случае выглядит это так:
[dmitry@smb-svr ~]$
Символ "~" обозначает домашний каталог (для текущего пользователя).
Чтобы стать суперпользователем вводим команду:
su
В ответ на появившееся приглашение вводим пароль суперпользователя. Если пароль введен правильно, то приглашение командного интерпретатора изменится и примет следующий вид:
[root@smb-svr dmitry]#
То есть, мы теперь - пользователь root, компьютер не поменялся, а папка-то была домашней для пользователя dmitry и реально называется тоже dmitry, что мы и видим. И вот теперь, с правами администратора, мы, как говорится, "во всеоружии".

Если до этого момента Вы еще не установили пакеты в графическом режиме, то теперь самое время сделать это в консоли. А так как двумя строками выше мы уже стали суперпользователем (root-ом), то установка проблем не вызовет, и пароль вводить каждый раз не будет необходимости. Переходим в папку, в которую загрузили установочные пакеты программ. Последовательно вводим три команды как показано ниже (в одной строке - одна команда):
rpm -i nxclient-3.2.0-9.i386.rpm
rpm -i nxnode-3.2.0-5.i386.rpm
rpm -i nxserver-3.2.0-7.i386.rpm
Каждая из команд устанавливает соответствующий пакет. После их выполнения с установкой сервера NX покончено. Переходим к его настройке. Данная процедура должна выполняться в консоли от имени "суперпользователя" root (администратора). Если Вы устанавливали пакеты в графическом режиме, пришло время запустить консоль и переключиться в режим администратора, как описано выше. Если же установку пакетов вы выполняли в режиме командной строки, то мы все еще в консоли и все еще с правами суперпользователя. И можем приступать к непосредственной настройке сервера удаленного доступа. Следующая команда может поначалу смутить людей, умеющих читать латинские буквы. Мы ж вроде как установили уже всё?! Ан нет! Итак, вводим:
./nxserver --install
В ответ получаем сокращенный протокол установки сервера удаленного доступа. Примерно такой:
NX> 701 Installing: server at: Пнд Апр 16 12:08:23 2007.
NX> 701 Autodetected system: mandrake.
NX> 701 Install log is: /usr/NX/var/log/install.
NX> 701 Checking NX server configuration using /usr/NX/etc/server.cfg file.
NX> 723 Cannot start NX statistics:
NX> 709 NX statistics are disabled for this server.
NX> 701 Version '3.2.0-7' installation completed.
NX> 701 Bye.
Нас в данном случае больше всего интересует лишь одно слово - "completed" (завершено). То есть, установка сервера завершена. Кому интересно, может просмотреть подробный протокол установки в файле /usr/NX/var/log/install. Но, чтобы уж убедиться наверняка, что сервер запущен и работает, вводим следующую команду:
./nxserver --status
Правильный ответ сервера выглядит так:
NX> 900 Connecting to server ...
NX> 110 NX Server is running.
NX> 999 Bye.
Фраза "NX Server is running" обозначает именно то, чего мы и добивались - сервер работает! Но, скажу сразу, попытка на этом этапе войти в систему с другого компьютера потерпит неудачу! Этому есть две причины. Одна из них - ключ SSH-шифрования. Помните, ранее, в примечаниях по установке сервера было сказано: "...програмное обеспечение NX использует механизмы, предоставляемые SSH-подсистемой для аутентификации...". Не зарываясь особо в дебри, скажу лишь, что при установке NX-сервера создается специальный файл - т.н. "ключ SSH-шифрования". Называется файл "default.id_dsa.key" и расположен он в папке "/usr/NX/share/keys". Этот ключ НЕОБХОДИМО каким-то доступным Вам образом скопировать на те компьютеры, с которых планируется удаленный вход в данный сервер! Впоследствии, ключ этот на тех компьютерах будет использован при настройки клиента удаленного доступа (см. ниже).

Вторая причина - использование NX-сервером собственной базы пользователей, которым разрешен удаленный вход в сервер. И чтобы пользователь dmitry смог в дальнейшем получить доступ к серверу извне, его нужно вписать в эту самую базу. Выполняется это командой:
./nxserver --useradd dmitry
По этой команде сервер в своей базе создаст пользователя (в данном примере - dmitry). Всё? Нет! Своя база пользователей - это не единственное, что у NX-сервера "свое". Есть еще и своя база паролей! По этому, чтобы для пользователя dmitry был возможен успешный удаленный вход, необходимо NX-серверу указать пароль этого самого пользователя. Вводим команду:
./nxserver --passwd dmitry --system
В ответ на приглашение вводим пароль для пользователя dmitry, и в ответ на второй запрос повторяем его (пароль) для верификации. Вот теперь со стороны сервера всё готово - в базу заведен пользователь и ему создан пароль. Можем для проверки задать нашему серверу вопрос о зарегестрированных на нем пользователях. Команда имеет следующий вид:
./nxserver --userlist
В ответ на эту команду сервер выводит список своих пользователей. Пока что мы ввели одного лишь пользователя, что, собственно, и наблюдаем:
NX> 149 Listing NX users:

Username
--------------------------------
dmitry

NX> 999 Bye.
Итак, наш сервер запущен, и в нем заведен пользователь. Теперь мы можем входить в систему дистанционно (с другого компьютера). Нужно лишь проверить еще две вещи, которые могут помешать этому.
  • Если на сервере запущен файервол (брандмауер), то обязательно должен быть открыт порт 22.
  • Если в настройках сервера SSH (SSHD) используется защита, впускающая в систему только определенных разрешенных пользователей, то в этот список обязательно должен быть включен пользователь "nx".
Перейдем теперь к компьютеру-клиенту, с которого мы собираемся дистанционно управлять сервером. Для этого на компьютере нужно установить и настроить программу-клиент. На момент написания данной статьи на сайте компании Nomachine были доступны к загрузке бесплатные клиенты для следующих операционных систем:
  • NX Client для Windows
  • NX Client для Linux
  • NX Client для Mac OSX
  • NX Client для Solaris
Выбираем требующийся для Вашей ОС пакет, загружаем и устанавливаем. Как устанавливать пакет в Linux, было описано выше (с поправкой на тот факт, что устанавливать нужно лишь один пакет - клиент). Процедуру установки в Windows, я думаю, описывать излишне. Про Mac OSX и Solaris мне сказать нечего - я с этими ОС не работал. В ОС Windows при первом запуске клиента будет предложен "волшебник" - NX Connection Wizard. В нем указывается имя сессии (Вы придумываете его самостоятельно), имя сервера, к которому Вы планируете подключиться, номер порта, ОС сервера, тип и размер рабочего стола, и т.д. По окончании работы "волшебника" на рабочем столе будет создан ярлык с именем сессии, придуманным Вами. Впоследствии запускать сеанс входа в сервер будем именно с его помощью. Настройку параметров клиента в любое время можно запустить следующим образом: "Пуск" -> "Программы" -> "NX Client for Windows" -> "NX Client for Windows". Жмем и видим следующее окно:



Рис. №_2 Окно запуска NX-клиента в Windows

В этом окне мы сначала выбираем имя сессии в меню "Session" (имя "black box control" в примере на рис. 2 - это я так назвал сессию у себя), а затем жмем кнопку "Configure..." Открывается меню настройки параметров сессии, как показано ниже слева:



Рис. №_3 Настройка NX-клиента в Windows (слева) и окно ввода ключа (справа)

В этом окне мы видим несколько закладок. В закладке General (Общее) - все те же настройки, которые были в "волшебнике". Проверим их на всякий случай еще раз.
  • Host - имя сервера, к которому планируется подключение. Вместо имени сервера можно ввести его IP-адрес (например, 192.168.1.1)
  • Port - номер порта, на котором сервер ждет подключений - 22.
  • Key - ключ (SSH-шифрования). О нем - отдельно ниже.
  • Desktop - выбор параметров рабочего стола. В одном выпадающем списке выбирается ОС, запущенная на сервере, к которому планируется подключение. Во втором выпадающем списке выбирается графическая оболочка (Gnome, KDE, пр.), вход в которую будет осуществлен автоматически.
  • Ползунок с подписями "Modem", "ISDN", "ADSL", "WAN" и "LAN" - меняет степень сжатия (компрессии) данных в канале между сервером и клиентом. Позволяет снизить объем трафика в канале связи "клиент <-> сервер".
  • Display - установка размеров экрана. Можно выбрать конкретные значения (например, "640х480" или "800х600" и т.д.), можно выбрать полноэкранный (Fullscreen) или пользовательский (Custom) размеры...
Теперь подробнее про ключ SSH-шифрования. Помните, ранее (при установке сервера) я уже обращал Ваше внимание на файл default.id_dsa.key. И говорил, что его нужно любым доступным способом скопировать на компьютер, с которого планируется входить в сервер. Надеюсь, Вы так и сделали. Теперь его время пришло. Нажимаем кнопку "Key..." (левая половина рис. 3). Появляется окно ввода ключа, как показано на рис. 3 справа. В этом окне мы нажимаем кнопку "Import" и на запрос программы указываем путь к файлу default.id_dsa.key. После этого в окне появляется этот самый ключ - набор букв, символов и цифр, являющийся по сути паролем, который NX-сервер при установке сгенерировал автоматически. (В реальном случае Вы конечно увидите именно буквы, символы и цифры, а не размазанные пятна как на рис. 3 - все-таки, там был мой пароль, вот я его и "размылил"). Нажимаем кнопку "Save" два раза: первый раз в окне ввода ключа (которое после этого закроется), а второй - в окне настройки параметров сессии. Напоследок - любимая кнопка "OK", и клиент готов!

После нажатия кнопки "OK" мы возвращаемся в окно запуска NX-клиента, показанное на рис. 2. В нём - вводим имя пользователя и пароль (поля "Login" и "Password", соответственно). Жмем кнопку "Login" и немножко ждем. Результат может выглядеть например так, как показано на рис. 4 ниже. В данном примере (для наглядности) я включил режим дисплея как "800х600" - и благодаря этому рабочий стол KDE моего Linux-сервера разместился в окне...




Рис. №_4 Рабочий стол пользователя dmitry на сервере smb-svr в окне NX-клиента, запущенного из под Windows


Напоследок - подсказка:

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

Вместо послесловия...


(С) Дмитрий Харций, апрель 2008 г.

ВВЕРХ СТРАНИЦЫ