Сервер VNC или удаленный рабочий стол на Ubuntu. Настраиваем VNC

19.07.2019

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования - инструменты Linuxconf, Webmin и SWAT.

Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.

Отзывы о книге

Сетевые средства Linux

Появилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.

Александр Стенцин, Help Net Security,

www.net-security.org

Если вы стремитесь в полной мере использовать сетевые возможности Linux - эта книга для вас. Я настоятельно рекомендую прочитать ее.

Майкл Дж. Джордан, Linux Online

Выхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.

Роджер Бертон, West, DiverseBooks.com

Книга:

Настройка сервера VNC

Разделы на этой странице:

Настройка сервера VNC

VNC представляет собой удобный инструмент удаленного доступа, но при использовании могут возникать проблемы. В частности, многие пользователи сообщают об ошибках, возникающих при совместной работе редактора NEdit (http://www.nedit.org) и VNC. В моей системе NEdit не реагировал на нажатие клавиш, т.е. оказался совершенно непригоден к использованию. К счастью, серьезные ошибки, подобные этой, возникают достаточно редко. В большинстве случаев проблему удается решить с помощью настройки компонентов VNC. Xарактеристики VNC можно задавать, редактируя сценарий, используемый для запуска сервера, либо изменяя содержимое конфигурационных файлов.

Установка основных характеристик сервера

Программа, реализующая функции сервера VNC, называется Xvnc. Эта программа содержит X-сервер (взаимодействующий с локальными X-программами) и сервер VNC (который взаимодействует с клиентом VNC). Вы, вероятно, заметили, что при обсуждении работы сервера программа Xvnc не упоминалась. Дело в том, что эта программа вызывается из сценария vncserver , используемого для запуска сервера VNC. Сценарий vncserver написан на языке Perl; изменяя его код, вы можете задавать характеристики сервера VNC, принимаемые по умолчанию. Некоторые из установок, которые можно осуществить, редактируя код сценария, описаны ниже.

Автоматическая установка параметров, используемых по умолчанию . В последних версиях vncserver для определения размера дисплея, числа битов, используемых для представления цвета, и других параметров применялся вызов &GetXDisplayDefaults() . Однако при этом может быть получено значение размера, не подходящее для клиента. Если вы хотите изменить размер экрана, вам надо закомментировать данную строку, поместив в начале ее символ # , и указать размер экрана явным образом. В сценарии, поставляемом в составе пакета, размер экрана устанавливается до вызова &GetXDisplayDefaults() .

Размер экрана . При запуске программа Xvnc создает виртуальный экран определенного размера. Если вы не используете опции по умолчанию, установите размер экрана с помощью переменной $geometry . Например, чтобы задать размер 900?675, надо включить в состав сценария следующую строку:

$geometry = "900x675";

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

Глубина цвета . Включив в состав сценария переменную $depth , вы можете контролировать число битов, используемых для представления цвета. Во многих случаях для кодирования цвета бывает достаточно 16 битов, однако программы, воспроизводящие большое количество разнообразных цветов, могут искажать данные, отображаемые другими программами. Это правило не распространяется на VNC; 16-битовое представление может привести к некорректному отображению цвета. В будущем данная проблема, скорее всего, будет решена.

Шрифт, или путь к шрифту . Сценарий, поставляемый в составе пакета, по умолчанию настроен для использования сервера шрифтов. Изменить эту настройку можно с помощью раздела Add font path and color database stuff here . Для добавления шрифта используется параметр -fp в строке $cmd , которая используется при вызове Xvnc . При необходимости вы можете сконфигурировать VNC для работы с сервером шрифтов. Использованием сервера шрифтов описано в главе 15.

Диспетчер окон, используемый по умолчанию . Сценарий vncserver , поставляемый в составе дистрибутивного пакета, содержит переменную $defaultXStartup , определяющую содержимое пользовательского сценария запуска. При первом запуске сценарий vncserver помещает соответствующий файл в пользовательский каталог. По умолчанию задан диспетчер окон который в настоящее время используется достаточно редко. Вы можете отказаться от значения, заданного по умолчанию, и заменить вызов twm на вызов другого диспетчера окон или среды рабочего стола, например startkde , sawmill или icewm . Изменения, внесенные в сценарий vncserver , повлияют на работу только тех пользователей, которые еще не запускали данный сценарий. Ниже будет рассмотрены средства установки конфигурации для существующих пользователей.

Даже если вы плохо знакомы с языком Perl, просмотрев данный сценарий, вы найдете сведения о многих характеристиках, которые, возможно, захотите изменить. В основном данный сценарий устанавливает опции, которые должны быть указаны при запуске Xvnc ; они помещаются в строку $cmd . Разобравшись в том, как формируются опции, вы сможете легко модифицировать их. По команде Xvnc -help &> Xvnc-help.txt создается текстовый файл с именем Xvnc-help.txt , содержащий информацию о доступных опциях Xvnc .

Перед тем как вносить изменения в сценарий vncserver , необходимо создать его резервную копию. Она понадобится в случае, если вы допустите ошибку и вам придется вернуться к исходному варианту сценария.

Сценарии vncserver , входящие в состав некоторых пакетов, существенно отличаются от исходного варианта. Особенно это относится к сценарию, поставляемому в составе системы Debian. Тем не менее советы, приведенные выше, применимы ко всем разновидностям vncserver . Необходимо лишь перед внесением изменений ознакомиться с конкретными особенностями сценария. Например, сценарий для системы Debian создает для определения шрифта переменную $fontpath .

Изменение параметров для отдельных пользователей

Глобальные характеристики сервера VNC задаются с помощью сценария vncserver . Если пользователь захочет изменить некоторые установки, он может предпринять следующие действия.

Самостоятельно создать сценарий запуска сервера VNC . Пользователь может скопировать сценарий в свой каталог, модифицировать его и использовать в дальнейшем для запуска сервера.

Организовать передачу опций сценарию . Сценарий vncserver обрабатывает несколько опций, которые могут быть использованы для переопределения значений, заданных по умолчанию. Например, опция -geometry ширина_и_высота устанавливает размер рабочего стола. Эти опции в основном совпадают с опциями программы Xvnc .

Редактировать отдельные конфигурационные файлы . Стандартный сценарий запуска сервера перед окончанием своего выполнения вызывает сценарий ~/.vnc/xstartup . В нем содержатся команды запуска диспетчера окон и xterm . Пользователь может редактировать этот файл так же, как и обычный сценарий запуска X Window. В некоторых дистрибутивных пакетах имя и расположение этого сценария отличается от указанных здесь. Например, в системе Debian вызывается сценарий /etc/X11/Xsession , который, в свою очередь, запускает пользовательский сценарий.xsession .

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

Совместная работа серверов XDMCP и VNC

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

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

service vnc
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/local/bin/Xvnc
server_args = -inetd -query vncserv -once
}

В данном случае важно правильно задать параметры сервера. В частности, опция -inetd сообщает Xvnc о том, что он запущен посредством суперсервера, -query vncserv означает, что необходимо обратиться к vncserv . Опция -once свидетельствует о том, что сервер должен быть вызван однократно, а затем прекратить свою работу; в результате, если пользователь завершит сеанс взаимодействия, соединение будет разорвано. Вы можете также использовать и другие опции Xvnc , например -geometry или -fp . Кроме того, в файле /etc/services должно присутствовать описание порта.

Для обычных соединений VNC использует номера портов 5900-5999, а порты 5800-5899 применяются для обработки обращений посредством Web-броузера (поддержки режима Java-сервера). Порт 5900 соответствует дисплею 0, порт 5901 - дисплею 1 и т.д. Таким образом, приведенное выше описание задает отображение приглашения к регистрации XDMCP и взаимодействие VNC через порт 0. Очевидно, что сервер XDMCP должен выполняться на компьютере, определенном посредством опции -query . Вы можете настроить систему так, чтобы она по-разному реагировала на обращения клиента через различные порты. Например, дисплею 0 может соответствовать размер рабочего стола 800?600, дисплею 1 - размер 1024?768 и т.д. Для идентификации таких серверов необходимо поместить в файл /etc/services несколько записей: по одной на каждый порт. Настроенный таким образом сервер VNC не требует ввода пароля - все детали взаимодействия обеспечивает сервер XDMCP. (Заметьте, что в отличие от традиционного VNC-взаимодействия, имя пользователя и пароль передаются в незакодированном виде.) Еще одна особенность сконфигурированного подобным образом сервера VNC состоит в том, что он может принимать обращения нескольких пользователей через один порт. Таким образом, совместное использование серверов VNC и XDMCP можно условно сравнить с применением сервера XDMCP и удаленного X-сервера. Однако эти системы имеют ряд отличий. Наиболее важные из них описаны ниже.

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

При работе VNC на пользовательском компьютере вместо X-сервера выполняется клиент VNC. Сервер VNC распространяется в исходных кодах, поэтому он свободно доступен, в то время как большинство X-серверов для Windows и MacOS предоставляется на коммерческой основе.

Протокол VNC имеет свои особенности. Если на пользовательском компьютере вы замените X-сервер клиентом VNC, качество системы может как повыситься, так и снизиться, в зависимости от потребностей пользователя и применяемого X-сервера.

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

Удалённо управлять компьютером – звучит интригующе, но только для тех, кто раньше с этим не сталкивался. На самом деле этот сервис появился уже давно и широко используется профессионалами. Многие разработчики различных программ изначально внедряют такую возможность в свои продукты, чтобы была возможность быстро помочь клиентам справиться с неполадками или настройками программного обеспечения. При наличии высокоскоростного интернета это происходит очень просто и быстро. Однако иногда возникает потребность помочь знакомым, друзьям или родственникам, особенно если это люди старшего поколения, впервые взявшие мышку в руку. Так же время от времени нужно срочно попасть на свой домашний компьютер, например, когда забыл скачать на флешку важную презентацию, или, находясь в другом городе, хочется показать подруге свои фотографии из последней поездки на Урал.

UltraVnc – это ещё одна программа для удалённого управления компьютером.
Достоинства: бесплатная и поддерживает как Windows, так и unixOS (напримерLinux).
Недостатки: куча пугающих настроек на английском языке.

Итак, глаза боятся, а руки делают. Скачиваем свежую версию с официального сайта www.uvnc.com или скачать . Запускаем. Выбираем server (сервер) и viewer (просмотрщик). Сервер ставится на тех компьютерах, к которым будем подключаться, а просмотрщик на тех, с которых будем подключаться.

«Установить сервис » и «Позволить использовать Ctrl+Alt+Del ». Да.

Поле «Incoming Connections » — «Входящие соединения».

Accept Socket Connections - включаем (т.е. нетрогаем).

Display - показывает номер порта (теоретически). Не трогаем.

Ports – пусть остаётся авто.

Enable JavaViewer (HTTP connect) - разрешить java-просмотрщик (через браузер). Да.

Allow Loopback Connections - разрешить соединение через «петлю» (как бы сам не себя для теста). Оставляем.

Loopback Only - только «петля» — больше ничего работать не будет. Нет.

Поле «Authentication » — «Аутентификация» (подтверждение личности/прав).

VNC Password - пароль на управление (на англ.).

View-Only Password – пароль только для просмотра (на англ.). Неплохо бы выставить его отличным от VNC.

Require MS Logon — применяет учётные записи windows. Галочку не ставим.

Поле «File Transfer » — «Передача файлов».Да, пригодится.

Поле «DSM Plugin » — шифрование данных. Как хотите, я не ставлю.

Поле «When last client disconnects » — «Когда последний клиент отключен».

— Ничего не делать. Выбираем .
— Заблокировать комп.
— Завершить сеанс.

Поле «Keyboard&Mouse » — «Клавиатура и мышь». Я ничего не выставляю.
— Отключает мышь и клаву того, кто подключается.
— Отключает мышь и клаву того, к кому подключаются.
— Японская клава.

Поле «Query on incoming connection » — «Запрос о входящем соединении».
Спрашивает у пользователя, разрешает ли он подключение к нему.
Display Query Window — время показа сообщения. Если пользователь ничего не нажал:
Refuse – отказ подключения.
Accept – резрешение подключения.

Поле «Multi Viewer Connections » — «Одновременное подключение нескольких клиентов».
— «Disconnect all existing connections » — отключение последнего после подключения нового. Оставляем.
— «Keep existing connections » — удерживать все подключения.
— «Refuse the new connection » — пункт означает, что идёт запрет на новое подключение, хотя на практике никакого запрета нет.
— «Refuse all new connections » — не позволять новых подключений, если одно уже есть.

Поле «Misc. » - тут всякие полезности для удобства, ускорения работы, уменьшения трафика.
Remove Aero (Vista) - отключить Aero (3D, прозрачность и прочие «украшения»). Отмечаем.
Remove Wallpaperfor Viewers - убирает обои с рабочего стола. Ставим галочку.
EnableBlank Monitoron Viewer Request - отключение монитора управляемого компа. Данная опция работает со сбоями, поэтому я снимаю галочку.
Disable Only Inputson Blanking Request - запрещает только ввод с консоли сервера, при этом экран не закрывается.
Enable Alpha-Blending Monitor Blanking - другой вариант отключения монитора сервера. Используйте, если с первым вариантом проблемы.
Capture Alpha-Blending - возможность видеть включенное видео. Работает со сбоями, но очень полезная функция, когда нужно просмотреть видеокамеры, например. Отмечаем.
Disable Tray icon - отключает иконку в трее. Отмечаем.
Forbid the user to close down WinVNC - запрещает отключать сервер. Ставим галочку.
Default Server Screen Scale - масштаб экрана при подключении. Оставляем 1/1.

Поле «Logging » — «Создание log-файла»
Log debug infos to the WinVNC.log file - пишет лог сервера. Не нужно.

Настройки выставлены, кликаем Apply и ОК.

На рабочем столе появляются три иконки: просмотрщик (Ultra VNC Viewer), сервер (Ultra VNC Server) и настройки (Ultra VNC Settings).
Открываем «Настройки» (Settings) и можем их здесь изменить. Но есть одна новая настройка «ScreenCapture » — захват экрана. Позволяет делать скриншоты рабочего стола.

Поле «Capture Options » — «Опции захвата». — Poll Full Screen – весь экран.
Poll Foreground Window – активное окно.
Poll Console Windows Only – только окно консоли.
Poll On Event Only –только окно события.
Poll Window Under Cursor – окно под курсором.
LowAccuracy (низкая точность) — дает прибавку в скорости за счет снижения точности.

Поле «Advanced » — «Расширенные».
Use System HookDll - опция имеет смысл на Windows 9x.
Video Hook Driver - использовать драйвер захвата видео. Обеспечивает наилучшее быстродействие на Windows XP, Vista, 7.
Show Primary Display — показывать первый экран.
Show Secondary Display – показать второй экран.
Capture Alpha-Blending – захват изображения видео.
Remote Aer While connected – отключить Aero, когда подключено соединение.
Remote Wall paper While connected – отключить обои рабочего стола, когда подключено соединение.

Двойной клик по значку «сервера» (Ultra VNC Server) запускает сервер, если он ещё не запущен.
Теперь запускаем «просмотрщик» (Ultra VNC Viewer).

Поле «Quick Options » настраивается скорость подключения.
Оставляем авто. Так же есть настройки:
View Only – только просмотр. Только при подглядывании.
Auto Scaling – нет полос прокрутки, при движении мышки вниз экран движется сам. Ставим .
Confirm Exit — подтверждать выход. Не нужно .

В общем больше нам ничего не нужно, поэтому вводим IP-адрес компьютера (как узнать IP-адрес своего компьютера смотрите ), на котором стоит уже настроенный сервер (UltraVNCServer) и жмём «Connect ». После запроса пароля попадаем на нужный нам компьютер.

(Visited 28 161 times, 7 visits today)

Для установки нам потребуется сервер или удаленный компьютер, локальный компьютер с клиентом VNC с поддержкой соединения через SSH тунель. Пользователям Windows мы рекомендуем RealVNC, UltraVNC или TightVNC. В Mac OS можно использовать стандартную утилиту Screen Sharing, или же в app store установить другие VNC приложения. Пользователи Linux имеют более широкий выбор программ, таких как krdc, vinagre, TightVNC, RealVNC, Remmina и др.

Установка Desktop Environment и сервера VNC

По умолчанию образы Ubuntu 16.04 не имеют графической оболочки рабочего стола и сервера VNC, которые нужно устанавливать дополнительно. Для начала установим пакеты последней версии среды рабочего стола Xfce и пакет TightVNC из репозиториев Ubuntu.

На заказанном сервере установите пакеты Xfce и TightVNC.

$ sudo apt install xfce4 xfce4-goodies tightvncserver

Для завершения первичной настройки VNC сервера после его установки воспользуйтесь командой vncserver для установки надёжного пароля.

$ vncserver

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

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

Настройка сервера VNC

Сначала укажем команды, которые сервер VNC должен выполнять при запуске. Эти команды задаются в конфигурационном файле xstartup в поддиректории .vnc вашей домашней директории. Скрипт запуска был создан во время выполнения команды vncserver на предыдущем шаге, сейчас мы изменим некоторые команды для работы с Xfce.

При первом запуске VNC запускает инстанс сервера по умолчанию на порту 5901. Этот порт называется портом отображения (display port), и в VNC он имеет обозначение:1. VNC может запускать много инстансов на других портах, например, :2, :3, и так далее. При работе с серверами VNC помните, что порт отображения с номером:X работает на порту 5900 X.

Поскольку мы собираемся внести изменения в конфигурацию сервера VNC, сначала нам необходимо остановить инстанс сервера, работающего на порту 5901.

$ vncserver -kill:1

Вывод должен выглядеть похожим образом с точностью до идентификатора процесса (process ID):

Вывод
Killing Xtightvnc process ID 17648

Перед внесением изменений в новый файл xstartup, сделаем резервную копию исходного файла.

$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Теперь создадим новый файл xstartup используя nano или другой текстовый редактор.

$ nano ~/.vnc/xstartup

Вставьте эти команды в файл для автоматического их выполнения при запуске или перезапуске сервера VNC, затем сохраните и закройте файл.

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Первая команда файла xrdb $HOME/.Xresources сообщает фреймворку графического интерфейса пользователя VNC, что необходимо использовать пользовательский файл.Xresources. Файл .Xresources сохраняет определённые пользовательские настройки рабочего стола, например, цвета терминала, тему курсора, рендеринг шрифтов. Вторая команда предписывает серверу запустить Xfce, который и позволяет вам комфортно управлять вашим сервером.

Для того, чтобы сервер VNC мог использовать эти настройки, сделаем файл исполняемым.

$ sudo chmod x ~/.vnc/xstartup

Теперь перезапустим сервер VNC.

$ vncserver

Сервер должен перезапуститься и вывести нечто похожее в консоль:

Вывод
New "X" desktop is your_server_name.com:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log

Тестирование рабочего стола VNC

Сперва создадим SSH соединение на локальной машине для установки безопасного соединения с VNC. Вы можете сделать это с помощью терминала на Linux или OS X следующей командой. Не забудьте заменить username и server_ip_address на имя своего пользователя с правами sudo и IP адрес вашего сервера.

$ ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

Если вы используете графический клиент SSH, например, PuTTY, задайте server_ip_address в качестве IP адреса соединения, а также установите localhost:5901 в качестве пробрасываемого порта в настройках соединения SSH своего клиента.

Далее вы можете использовать свой клиент VNC для установки соединения с сервером VNC на localhost:5901 . Вам будет предложено аутентифицироваться. Используйте пароль, заданный вами на первом шаге.

После успешной установки соединения вы увидите рабочий стол Xfce по умолчанию. Он должен выглядеть похожим образом:

Теперь вы имеете полный доуступ к управлению сервером и файлам в вашей домашней директории.

Создание файла сервиса VNC

Сначала создадим юнит-файл /etc/systemd/system/ с помощью вашего текстового редактора:

$ sudo nano /etc/systemd/system/

Скопируйте и вставьте в него следующее содержимое. Убедитесь, что вы изменили значение поля User и имя пользователя в поле PIDFILE на ваши значения.

$ /etc/systemd/system/

Description=Start TightVNC server at startup
After=syslog.target network.target


Type=forking
User=sammy
PAMName=login
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill:%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800:%i
ExecStop=/usr/bin/vncserver -kill:%i


WantedBy=multi-user.target

$ sudo systemctl daemon-reload

Активируем юнит-файл.

$ sudo systemctl enable

Остановим текущий инстанс сервера VNC, если он запущен.

$ sudo systemctl start

Убедимся, что сервис запущен, этой командой:

$ sudo systemctl status >

Если запуск прошёл корректно, вывод должен выглядеть похожим образом:

Название Вывод
This email address is being protected from spambots. You need JavaScript enabled to view it. - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/ ; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill:%i (code=exited, status=0/SUCCESS) ... systemd: Starting TightVNC server on Ubuntu 16.04...
systemd: pam_unix(login:session): session opened for user finid by (uid=0)
systemd: Started TightVNC server on Ubuntu 16.04.

Готово! Вы смогли установить и настроить сервер VNC на вашем сервере с Ubuntu 16.04. Отныне Вы можете управлять файлами, программным обеспечением и настройками с помощью привычного графического интерфейса.

Работа с VNC-клиентом. Материал ориентирован на неопытного пользователя.

1. Установка VNC-клиента
2. Подключение VNC-клиента к удаленному компьютеру
3. Отключение VNC-клиента от удаленного компьютера
4. Тюнинг VNC-клиента
5. Частые проблемы

Для работы с удаленным компьютером по VNC на компьютере пользователя нужно запустить программу-клиент (VNC viewer, VNC client). Эта программа передает на удаленный компьютер данные о нажатиях на клавиши и о движениях мыши, сделанных пользователем, и показывает информацию, предназначенную к выводу на экран.

1. Установка VNC-клиента
Для ОС Windows можно бесплатно скачать и инсталлировать VNC-клиент UltraVNC и TightVNC .

Mac OS X начиная с версии 10.5 имеет поддержку VNC-клиента в RemoteDesktop . Для предыдущих версий можно использовать VNC-клиенты JollysFastVNC и .

Для Linux ветви Debian (Ubuntu) VNC-клиент устанавливается из репозитория командой:

Apt-get install vncviewer

Для ветви RedHat (CentOS, Fedora) - командой:

Yum install vnc

Для FreeBSD VNC-клиент (TightVNC) устанавливается из пакетов командой:

Pkg_add -r tightvnc

2. Подключение VNC-клиента к удаленному компьютеру
Для подключения VNC-клиента к удаленному компьютеру требуется указать его IP-адрес или DNS-имя, и номер дисплея (по умолчанию, :0) или номер TCP-порта (по умолчанию, 5900). Если VNC-сервер требует авторизации, то при подключении к нему VNC-клиент запросит пароль. Обратите внимание, что пароль доступа к VNC-серверу не связан с каким-либо аккаунтом (учетной записью пользователя) на удаленном компьютере, а служит только для ограничения доступа к дисплею VNC-сервера.

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

Так как на компьютере одновременно могут работать несколько VNC-серверов, для их разделения используют параметр номер дисплея . Например, один VNC-сервер может быть запущен на дисплее:0, другой - на дисплее:1. Каждому номеру дисплея соответствует номер TCP-порта, на котором VNC-сервер принимает соединения. Номер порта для дисплея получается прибавлением номера дисплея к базовому номеру порта - 5900. Дисплею:0 соответствует TCP-порт 5900, дисплею:1 - порт 5901.

3. Отключение VNC-клиента от удаленного компьютера
При закрытии окна VNC-клиента или после выхода из окружения средствами рабочего стола, в зависимости от настроек VNC-сервера, рабочая сессия пользователя может закрыться с остановкой всех используемых программ, или продолжать работу и быть доступной снова при повторном подключении к VNC-серверу.
4. Тюнинг VNC-клиента
Большое количество передаваемой на экран информации влечет за собой повышенные требования к скорости канала - к его пропускной способности и времени передачи пакетов. Нахватка пропускной способности приводит к некомфортным задержкам при больших изменениях показывамой на экране информации - открытии новых окон, скроллинге и т.д. Особенно большие задержки будут возникать при показывании фотографий и других изображений или элементов интерфейса, имеющих большое количество цветов и сложные формы.

Главный параметр, который влияет на объем передаваемых данных - алгоритм кодирования передаваемой графики. Для уменьшения объема и, соответственно, ускорения работы, рекомендуется использовать алгоритмы Tight, ZLib, ZRLE - по сравнению с несжатыми данными (Raw), они обеспечивают сжатие в десятки раз, заметно нагружая процессор. Эти алгоритмы кодирования обеспечивают комфортную работу даже на каналах со скоростью 256-512 Кбит/сек.

Для сокращения объема передаваемой по сети информации также можно устанавливать высокий уровень сжатия (Compression Level, Compression Value), низкий уровень качества JPEG (JPEG Quality) и включать режим уменьшения количества цветов (-bgr233, Restricted colors). Самый большой эффект из них при заметном снижении качества изображения дает режим уменьшения количества цветов - объем передаваемой информации уменьшается в 1.5-3 раза, соответственно, в 1.5-3 раза ускоряется отображение на экране.

JPEG применяется алгоритмом кодирования Tight для сжатия участков экрана, содержащих фотографии и другие сложные изображения с большим числом цветов. Использование Tight+JPEG сокращает в 2-5 раз объем передаваемых при этом данных. Другие алгоритмы кодирования JPEG не поддерживают.

1. Выпадающего меню «Система -> Параметры»

Объем передаваемых данных и скорость отображения на канале 1 Мбит/сек при открытии выпадающего меню «Система -> Параметры» (на рисунке меню выделено зеленым пунктиром):

5. Частые проблемы
Не удается подключиться к VNC-серверу
Нужно проверить:
  1. есть ли доступ к интернету;
  2. отвечает ли виртуальный сервер на пинги;
  3. запущен ли на виртуальном сервере VNC-сервер;
  4. нет ли по пути файервола, закрывающего доступ к TCP-порту VNC-сервера;
  5. правльно ли указан номер дисплея или TCP-порт VNC-сервера (номер порта = 5900 + номер дисплея).
Медленная работа через достаточно быстрый канал
Если VNC-клиент не может согласовать с VNC-сервером использование алгоритм кодирования графики с компрессией данных, выбирается алгоритм по умолчанию - Raw, который передает данные без сжатия. Также кодирование без сжатия или с низким уровнем сжатия может автоматически выбираться VNC-клиентом при работе через быструю локальную сеть. Данную проблему можно исправить, принудительно указав в настройках VNC-клиента алгоритм кодирования с высоким уровнем сжатия - ZLib, ZRLE, Tight.

Однако, для некоторых сочетаний клиента и сервера такое решение может быть бесполезным из-за ошибок в согласовании алгоритма кодирования. Например, клиент TightVNC с сервером RealVNC часто могут работать только с кодировкой Raw. Решением в этом случае будет смена VNC-клиента или VNC-сервера.

Несмотря на то, что Raspberry Pi прекрасно работает с монитором или телевизором с помощью кабеля HDMI, часто возникают ситуации, когда монитор не нужен и вполне достаточно видеть рабочий стол удаленно с другого комьютера. В этом случае нам поможет VNC. К слову, удаленно можно решить большинство задач, таких как программирование или настройка операционной системы.
Что нам понадобится?

Предполагается, что на Raspberry Pi установлена операционная система (специальная версия Linux дистрибутива Debian), а на удаленном компьютере установлена Windows 7. Для этого необходимо установить какой либо клиент VNC для Windows, например UltraVNC — она достаточно удобная и бесплатная.
Страница загрузки UltraVNC

Когда VNC сервер будет настроен и запущен, то клиента UltraVNC будет достаточно для того, чтобы удаленно подключиться к Raspberry Pi. Однако, если мы будем настраивать VNC также в удаленном режиме, то дополнительно понадобится клиент SSH — бесплатная программа PuTTY.
Страница загрузки PuTTY

Последнее, что нам нужно, это IP адрес вашего Raspberry Pi. Если ему присвоен статический адрес, то этого достаточно. Если вы знаете, как посмотреть IP адрес на вашем маршрутизаторе, то этого также будет достаточно. Если же адрес не известен и посмотреть его нет возможности, то понадобится программа для сканирования IP адресов в сети. Для этого вполне подойдет Advanced IP Scanner, он просканирует локальную сеть и покажет список всех устройств с указанием IP адреса каждого. Чаще всего определить адрес Raspberry Pi не сложно, в списке он имеет имя «raspberrypi» или подобное.
Страница загрузки Advanced IP Scanner

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

Запускаем SSH на Raspberry Pi

Начнем с того, что такое SSH. Это программа, которая может быть запущена в операционной системе Linux и позволяет получить удаленный доступ к консоли (командной строке) Raspberry Pi. С ее помощью можно запустить любую программу или выполнить команду в командной строке удаленно, при помощи клиента SSH — PuTTY.

По умолчанию в Raspbian сервер SSH отключен, поэтому сначала его нужно будет запустить. Для этого придется подключить Raspberry Pi к монитору или телевизору и подключить к нему USB клавиатуру. Есть два способа запустить сервер SSH. Более простой заключается в использовании программы raspi-config. Для этого необходимо набрать команду и выбрать пункт «ssh Enable or disable ssh server » в предложенном меню:

Другой способ, это ввести команду sudo /etc/init.d/ssh start , как показано ниже:

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

Наконец, опишем способ запустить сервер SSH без использования монитора и клавиатуры. Для этого необходимо вынуть SD карту с установленной Rasbian, вставить ее в картридер и подключить к компьютеру под управлением Windows.
SD карта Raspberry Pi имеет небольшой раздел, отформатированный в системе Fat32, понятной Windows. На этом разделе содержатся некоторые конфигурационные файлы. Содержимое SD карты выглядит так:

Для того, чтобы обеспечить запуск сервера SSH нужно переименовать файл boot_enable_ssh.rc в boot.rc:

Теперь достаточно вставить SD карту обратно в Raspberry Pi и включить его. Сервер SSH будет запущен!

Подключаемся через SSH

Как было сказано выше, для того чтобы подключиться к Raspberry Pi удаленно с использованием VNC необходимо сначала запустить сервер VNC. Ниже показано, как выполнить эту процедуру так же в удаленном режиме. Для этого понадобится клиент SSH — PuTTY. После загрузки программы PuTTY, достаточно просто запустить полученный файл, установка не требуется. Откроется такое окно:

В поле Host Name вводится IP адрес, найденный в начале. Затем нажимаем кнопку Open. Как только PuTTY подключится к SSH серверу, откроется окно терминала и появится запрос учетных данных (пользователь pi с паролем raspberry по умолчанию):

Как только будут введены верные учетные данные, появится приглашение командной строки. Здесь можно ввести любую команду Raspberry Pi:

Настройка VNC сервера через SSH

Теперь, когда соединение установлено, необходимо запустить VNC сервер. Если сервер запускается впервые, то вероятнее всего, нужно сначала выполнить установку. Предполагается, что Raspberry Pi имеет выход в интернет, поскольку он понадобится для установки сервера VNC. Для этого, выполните команду:
sudo apt-get install tightvncserver
Как было сказано выше, PuTTY выполняет введенные команды непосредственно на Raspberry Pi, поэтому введенная выше команда установит VNC сервер на ваш компьютер.
Обратите внимание: во время установки будет задан вопрос об установке программы без проверки подлинности (Install these packages without verification ?). Понадобится ответить «y» на этот вопрос.

После окончания установки VNC сервер нужно запустить. Для этого используйте команду vncserver:1 -geometry 1280×800 -depth 16 -pixelformat rgb565

Эта команда запустила VNC сервер! В данном случае, это означает, что запущена виртуальная X-сессия (виртуальное представление рабочего стола Raspberry Pi), абсолютно аналогично тому, как по команде startx при загрузке при подключенном мониторе. Теперь, когда вы запустите клиент VNC и подключитесь, то будете подключены именно к этому виртуальному рабочему столу.

Наиболее важная часть этой команды- параметр :1 . Он определяет номер порта на котором будет запущен процесс VNC. Номер порта может быть любым, но нужно запомнить его, он понадобится при подключении. Еще один важный параметр, это разрешение (в данном случае размер) виртуального рабочего стола. Его можно указать любым, однако не стоит указывать больше, чем реальное разрешение компьютера, с которого осуществляется удаленный доступ.

При первом запуске VNC сервер попросит ввести пароль. Этот пароль нужен будет при подключении к удаленному рабочему столу.

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

Подключаемся с помощью UltraVNC

После запуска VNC сервера, последнее что остается сделать, это подключиться к нему удаленно. Запустите UtlraVNC, введите IP адрес, номер порта (1) и нажмите кнопку Connect.
И вот — все готово!

Важное замечание! Изображение удаленного стола может отличаться, в зависимости от того, под какими учетными данными был запущен vncserver. При запуске под учетными данными рядового пользователя, т.е. как указано выше, рабочий стол будет выглядеть как обычно. С другой стороны, при запуске vncserver под учетной записью суперпользователя при помощи команды sudo рабочий стол будет выглядеть так, как на изображении ниже. Кстати, тоже самое касается команды startx при работе с Raspberry Pi непосредственно (локально).

Похожие статьи