**VNC** -- это метод удаленного доступа к рабочему столу компьютера по сети. Данные о нажатии клавиш и движении мыши, выполняемых пользователем на собственном компьютере передаются по сети на удаленный компьютер и воспринимаются им как действия с его собственными клавиатурой и мышью. Информация с экрана удаленного компьютера выводится на экране компьютера пользователя. **VNC** удобен при работе с графическим интерфейсом - рабочим столом и программами для рабочего стола операционных систем **Windows**, **Linux** и других. Для начинающих администраторов работа с сервером по **VNC** будет проще, чем в командной строке или в панеле управления с веб-интерфейсом. Администрирование сервера выглядит почти так же, как настройки десктопной версии операционной системы, будь то **Linux** или **Windows**. На удаленной системе должен быть запущен VNC-сервер (VNC-server), который обменивается данными с компьютером пользователя. Доступ к VNC-серверу может быть защищен паролем. На компьютере пользователя должна быть запущена программа VNC-клиент (VNC client, VNC viewer), которая передает на VNC-сервер информацию о нажатиях на клавиши и движениях мыши, получает от него изображение и выводит его на экран. VNC-клиенты существуют для **Windows**, **Linux**, **FreeBSD**, **MacOS** и многих других платформ. Есть также VNC-клиенты для карманных компьютеров и мобильных телефонов. При запуске VNC-клиента достаточно указать доменное имя или IP-адрес удаленного компьютера и пароль, если доступ к VNC-серверу защищен паролем. Основной объем передаваемых по **VNC** данных приходится на графический информацию, выводимую на экран. Для работы требуется канал, шириной от 32 Кбит/сек до 2 Мбит/сек. Для комфортной работы в полноцветном режиме при разрешении экрана 1024x768 скорость канала должна быть 1-2 Мбит/сек. ===== Установка VNC-клиента ===== Для **Windows** можно использовать свободные VNC-клиенты [[https://ru.wikipedia.org/wiki/UltraVNC|UltraVNC]] и [[https://ru.wikipedia.org/wiki/TightVNC|TightVNC]]. **Mac OS X**, начиная с версии 10.5 имеет поддержку VNC-клиента в RemoteDesktop. Для предыдущих версий можно использовать VNC-клиенты **JollysFastVNC** и **Chicken**. Для дистрибутивов **Linux**, основанных на **Debian** - VNC-клиент устанавливается из пакета **vncviewer**: # apt-get install vncviewer Для ветви **RedHat** - из пакета **vnc**: # yum install vnc Для **FreeBSD** - VNC-клиент устанавливается из пакетов командой: # pkg_add -r tightvnc ===== Подключение VNC-клиента к удаленному серверу ===== Для подключения VNC-клиента к удаленному серверу требуется указать его IP-адрес или имя и номер дисплея (по умолчанию, :0) или номер TCP-порта (по умолчанию, 5900). Если VNC-сервер требует авторизации, то при подключении к нему VNC-клиент запросит пароль. Пароль доступа к VNC-серверу не связан с какой-либо учетной записью на удаленной системе и служит только для ограничения доступа к дисплею VNC-сервера. После установки соединения, в зависимости от настроек может потребоваться авторизация пользователя на VNC-сервере или может быть открыта запущенная ранее рабочая сессия. Так как на компьютере одновременно могут работать несколько VNC-серверов, для их разделения используют параметр - номер дисплея. Например, один VNC-сервер может быть запущен на дисплее :0, другой - на дисплее :1. Каждому номеру дисплея соответствует номер TCP-порта, на котором VNC-сервер принимает соединения. Номер порта для дисплея получается прибавлением номера дисплея к базовому номеру порта - 5900. Дисплею :0 соответствует TCP-порт 5900, дисплею :1 - порт 5901. При закрытии окна VNC-клиента или после выхода из окружения рабочего стола (logoff), в зависимости от настроек VNC-сервера, рабочая сессия пользователя может закрыться с остановкой всех используемых программ или продолжать работу и быть доступной снова при повторном подключении к VNC-серверу. ===== Настройки VNC-клиента ===== Большое количество передаваемой на экран информации влечет повышенные требования к пропускной способности канала. Нахватка пропускной способности приводит к некомфортным задержкам при больших изменениях информации на экране - открытии новых окон, скроллинге и т.д. Большие задержки будут возникать при просмотре изображений или элементов интерфейса, имеющих большое количество цветов и сложные формы. Главный параметр, влияющий на объем передаваемых данных - алгоритм кодирования передаваемой графики. Для уменьшения объема передаваемых данных рекомендуется использовать алгоритмы Tight, ZLib, ZRLE, по сравнению с несжатыми данными (Raw) они обеспечивают сжатие в десятки раз, заметно нагружая процессор. Эти алгоритмы кодирования обеспечивают комфортную работу даже на каналах со скоростью 256-512 Кбит/сек. Для уменьшения объема передаваемых данных также можно установить высокий уровень сжатия (Compression Level, Compression Value), низкий уровень качества JPEG (JPEG Quality) и включить режим уменьшения количества цветов (-bgr233, Restricted colors). Самый большой эффект при заметном снижении качества изображения даст режим уменьшения количества цветов - объем передаваемой информации уменьшится в 1,5 - 3 раза. Если не удается подключиться к VNC-серверу, нужно проверить: * есть ли доступ к интернету * отвечает ли удаленный сервер на пинги * запущен ли на удаленном сервере VNC-сервер * нет ли на пути файрвола, закрывающего доступ к TCP-порту VNC-сервера * правльно ли указан номер дисплея или TCP-порт VNC-сервера (номер порта = 5900 + номер дисплея) Если VNC-клиент не может согласовать с VNC-сервером использование алгоритма кодирования графики с компрессией данных, то по умолчанию данные передаются без сжатия (Raw). Также, такой способ передачи данных может автоматически выбираться VNC-клиентом при работе через быструю локальную сеть. Это можно исправить, принудительно указав в настройках VNC-клиента алгоритм кодирования с высоким уровнем сжатия - ZLib, ZRLE, Tight. Однако, для некоторых сочетаний клиента и сервера такое решение может быть бесполезным из-за ошибок в согласовании алгоритма кодирования. Например, клиент **TightVNC** с сервером **RealVNC** часто могут работать только с кодировкой Raw. Решением в этом случае будет смена VNC-клиента или VNC-сервера.