воскресенье, 8 декабря 2013 г.

Настройка сервера VNC и RDP совместно с LightDM

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

Всё оказалось довольно просто: дисплейный менеджер LightDM умеет работать совместно с VNC-сервером, позволяя авторизоваться в системе и начать новый X-сеанс.

Установка и настройка VNC-сервера

Для начала устанавливаем пакет с VNC-сервером TightVNCServer:
# apt-get install tightvncserver
В файле конфигурации /etc/lightdm/lightdm.conf находим секцию VNCServer и приводим её к следующему виду:
[VNCServer]
enable=true
port=5900
width=1024
height=768
depth=8
Смысл всех настроек очевиден:
  • enable включает возможность подключиться к LightDM по протоколу VNC,
  • port задаёт номер TCP-порт, на котором VNC-сервер будет ожидать подключений,
  • width задаёт ширину экрана для VNC-сервера,
  • height задаёт высоту экрана для VNC-сервера,
  • depth задаёт глубину цвета для точки - 8 бит, 16 бит, 24 бита,
Осталось перезапустить дисплейный менеджер LightDM. Учтите, что при перезапуске LigthDM будут завершены все открытые X-сеансы, поэтому лучше завершить их вручную и выполнить следующую команду из текстовой консоли:
# /etc/init.d/lightdm restart
Теперь LightDM будет ожидать подключений на TCP-порту 5900 и при подключении клиента будет запускать VNC-сервер. Узнать, какой VNC-сервер будет запускаться, можно при помощи следующей команды:
# update-alternatives --list vncserver
Выбрать используемый VNC-сервер можно при помощи следующей команды:
# update-alternatives --config vncserver
Если в системе установлен только один VNC-сервер, будет использоваться он. При удалении используемого VNC-сервера система переключится на использование другого.

Лучше использовать клиент наиболее совместимый с сервером. В нашем случае - это TightVNCViewer из пакета xtightvncviewer. VNC-сервер одновременно будет выступать в роли X-сервера, который будет взаимодействовать с LightDM. При подключении мы увидим обычный экран LightDM с указанным разрешением и глубиной цвета, в котором можно ввести имя пользователя и пароль для создания нового X-сеанса.

Установка и настройка RDP-прокси

Для подключения к компьютеру с VNC-сервером по протоколу RDP можно установить и настроить специальный прокси-сервер XRDP, который принимает подключения по протоколу RDP, а сам устанавливает подключения по протоколу VNC к VNC-серверу (на самом деле в данном случае соединения будет принимать LightDM, запуская для их обслуживания VNC-сервер). Прокси будет одновременно выступать в роли RDP-сервера и VNC-клиента.

Установим пакет с прокси:
# apt-get install xrdp
Приведём файл конфигурации /etc/xrdp/xrdp.ini к следующему виду:
[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1

[xrdp1]
name=default
lib=libvnc.so
username=
password=
ip=127.0.0.1
port=5900
На самом деле этот RDP-прокси может выступать и в роли RDP-клиента, может устанавливать подключения к произвольным компьютерам в сети, самостоятельно запускать X-серверы и использовать различные схемы аутентификации. В данном случае из файла конфигурации удалены все остальные варианты подключения и добавлен только один вариант с названием default, который позволяет подключиться к VNC-серверу, запущенному на том же компьютере, что и сам RDP-прокси. Подключение будет устанавливаться на TCP-порт 5900, а RDP-прокси не будет спрашивать у пользователя имя и пароль.

Теперь перезапустим прокси, чтобы настройки вступили в силу:
# /etc/init.d/xrdp restart
Теперь можно подключаться к VNC-серверу при помощи обычного RDP-клиента из Windows. При этом можно не думать об установке VNC-клиента, который не всегда может оказаться под рукой во "враждебной" среде Windows :)

Вот снимок экрана при подключении по VNC при помощи Remmina:

5 комментариев:

Alex комментирует...

Хорошо, дак как к открытому сеансу подключиться??
xtightvncviewer a.b.c.d:0 - не предлагать))

morbo комментирует...

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

Ответ на ваш вопрос находится за рамками этой статьи. Я не задавался этим вопросом, поэтому ответить мне нечего :)

Анонимный комментирует...

> Хорошо, дак как к открытому сеансу подключиться??

x11vnc

Анонимный комментирует...

Мы юзеры ленивые, сам в курсе, нам всё в одном подавай на блюдечке с золотой каёмочкой.
Статья радует, наконец-то можно будет нормально сидеть с Windows по RDP, с другой стороны отсутствие части про клиентское подключение через VNC слегка огорчает. Она бы не испортила, а дополнила статью, касающийся этой темы и упоминавшию загадочный клиентский режимчик. Вы бы сообщили, что ль, если она появилась, либо возникло желание написать, это было бы кстати. А нет и к чёрту, молчание знак молчания, спасибо хоть прошли, благо наблогах часто премодерация поставлена от лиха лютого а ля я.
Поясняю: у меня есть старый нетбук на Windows XP, по начинке и заложенной идее "тонкий клиент", дохлый жуть, также есть мощный изначально игровой компьютер с 16 ГБ памяти, с программой VMware Workstation, средством для работы виртуальных машин, когда внутри одной системы можно запустить любую иную, ведь пара гигабайт не жалко, однако , если мой прошлый выбор, невезучий Oracle VirtualBox (не устроил преотвратно сырой реализацией виртуальной видеокарты) давал знакомый RDP, то новая программа, увы, только VNC, в котором ни бум-бум. Я понимаю, она стоит дорого и для корпоративного использования, отлажена, универсальна и крута, но всё же, немного дезориентирует это всё... Такие вот дела.
Заранее спасибо и удачи вашему блогу!
P. S. Извиняюсь если два раза написал, стжу через Onion, он глючный зараза.

morbo комментирует...

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

Насколько я понимаю, вас интересует клиент VNC для Windows. К сожалению, описание подобных тривиальных вещей не в формате этого блога. Да и мне лень тратить на это время. Достаточно поискать через поисковик "VNC-клиент для Windows" - найдутся и ссылки, где его можно скачать и статьи, в какое поле ввода что указывать.

>А нет и к чёрту, молчание знак молчания, спасибо хоть прошли, благо наблогах часто премодерация поставлена от лиха лютого а ля я.

Комментарии разные бывают. Кому-то не лень ввести капчу только для того, чтобы добавить комментарий со ссылочкой на какой-нибудь сомнительный сайт. Кто-то пишет несодержательные комментарии в стиле "КГ/АМ" - не думаю, что стоит самому тратить на них время и тратить время читателей. Кто-то просит помочь им с проблемой и пишет свои контакты - не думаю, что стоит оставлять личные данные человека на всеобщее обозрение. Остальные комментарии, как правило, публикую.