Подключение к удаленному компьютеру по VNC

    Работа с 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 и Chicken.

    Для 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 Мбит/сек при открытии выпадающего меню «Система -> Параметры» (на рисунке меню выделено зеленым пунктиром):

      Полноцветный режим 256 цветов (BGR233)
    Объем Время Объем Время
    ZLib 11 Кб 0.09 сек 7 Кб 0.06 сек
    HexTile 208 Кб 1.6 сек 118 Кб 0.95 сек
    Raw 248 Кб 2 сек 128 Кб 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-сервера.

    Другие статьи этой серии:
    VNC — удаленный доступ к компьютеру по сети. Введение в VNC.
    Установка VNC-сервера на VDS и рекомендации по тюнингу
    P.S. Если есть замечания, добавления, вопросы — пишите в комменты, по ним буду дописывать статью.
    Метки:
    Поделиться публикацией
    Комментарии 4
    • +1
      Я бы еще упомянул TigerVNC так как он без проблем работает в Linux и Windows, так со стандартным клиентом на линуксе и UltraVNC сервером на винде у меня например были проблемы, Tight кстати работал практически без проблем, также его рекомендую для гетерогенного использования.
    • 0
      Думаю если пособие по установке такое подробное, добавьте еще о rc'шниках и логах в
      ~/.vnc.
      Например о файле xstartup:
      cat /root/.vnc/xstartup
      #!/bin/sh

      xrdb $HOME/.Xresources
      #xsetroot -solid grey
      startfluxbox
      #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
      #twm &

      И .vnc/passwd
    • +1
      Не очень понятно, почему при канале в 100 мегабит/с и без сжатия тормозит дисплей. Используя FreeNX и отключенном сжатии картинка обновляется довольно быстро. А сжатие отключаю, чтобы лишний раз не напрягать процессоры с обоих сторон, ведь ширина канала достаточна, чтоб туда-сюда гонять по 8 мегабайт/с.
    • 0
      На самом деле имеется огромное количество проблем при подключении например к маку с винды.
      Каждый клиент ведёт себя по-разному. Гугление нормальных результатов не даёт…

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.