25 ноября 2009 в 13:21

Подключение к удаленному компьютеру по 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. Если есть замечания, добавления, вопросы — пишите в комменты, по ним буду дописывать статью.
+1
85752
48
sply 22,5

Комментарии (4)

+1
xtavras, #
Я бы еще упомянул TigerVNC так как он без проблем работает в Linux и Windows, так со стандартным клиентом на линуксе и UltraVNC сервером на винде у меня например были проблемы, Tight кстати работал практически без проблем, также его рекомендую для гетерогенного использования.
0
voa, #
Думаю если пособие по установке такое подробное, добавьте еще о 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
tnz, #
Не очень понятно, почему при канале в 100 мегабит/с и без сжатия тормозит дисплей. Используя FreeNX и отключенном сжатии картинка обновляется довольно быстро. А сжатие отключаю, чтобы лишний раз не напрягать процессоры с обоих сторон, ведь ширина канала достаточна, чтоб туда-сюда гонять по 8 мегабайт/с.
0
q_styler, #
На самом деле имеется огромное количество проблем при подключении например к маку с винды.
Каждый клиент ведёт себя по-разному. Гугление нормальных результатов не даёт…

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