Описание TightVNC. Подключение к удалённому рабочему столу с использованием TightVNC Удаленная установка tightvnc

Исходя из названия приложения VNC Viewer, многие пользователи сразу могут догадаться, к какому классу программного обеспечения оно относится, например, проведя аналогию с известным пакетом TeamViewer. Однако рядовые пользователи могут столкнуться с такой утилитой впервые, поэтому стоит отдельно остановиться на некоторых вопросах, связанных с тем, как и какую модификацию программы лучше установить, как настроить приложение для оптимального режима работы, как пользоваться VNC Viewer, «выжав» из приложения максимум его возможностей.

Общие сведения о программе VNC Viewer

Вам будет интересно:

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

То есть данную программу можно отнести к классу RDP-приложений, предназначенных для подключения к удаленному «Рабочему столу». Однако только доступом к удаленным компьютерам дело не ограничивается, поскольку в самой программе имеется еще немало дополнительных возможностей:

  • Полное управление настройками без ограничений в полноэкранном или оконном режиме.
  • Трансфер файлов.
  • Возможность отсылки сообщений через встроенный чат.
  • Блокирование периферийных устройств, если это необходимо (мыши, клавиатуры и т. д.).
  • Возможность доступа к подключенным ПК через браузер.
  • Организация подключения с несколькими терминалами одновременно.

Работа с общими файловыми ресурсами - лишь один из примеров использования SSL Explorer. Ниже мы покажем способ удалённого доступа к рабочему столу Windows средствами решения, основанного на открытом исходном коде - TightVNC, совмещённом с туннелированием SSL Explorer.

Вы спросите: почему нужно использовать TightVNC, если в SSL Explorer уже есть поддержка RDP? На самом деле, поддержка RDP есть, и вовсе не обязательно использовать TightVNC. К сожалению, не все ОС поддерживают RDP, например Windows XP Home.

Кроме того, RDP является протоколом Windows, а VNC - кросс-платформенным. Другими словами, расширение Windows TightVNC, установленное на компьютер с SSL Explorer, позволит работать не только с Windows, но и с Linux и другими системами, на которые установлен сервер VNC. VNC является решением, основанным на открытом исходном коде, и не требует покупки лицензии, а также его можно самостоятельно изменять по мере необходимости. Кстати, для SSL Explorer есть расширения с поддержкой и других протоколов, таких как Citrix ICA для пользователей серверов Citrix.

Для настройки TightVNC нужно сделать всего три шага.

  • Установить поддержку TightVNC в SSL Explorer в разделе "Управление расширениями/Extension Manager".
  • Установить TightVNC на ПК, к которому нужно предоставить удалённый доступ.
  • Создать ярлык для подключения SSL Explorer к нужному ПК.

Шаг 1

Скачиваем TightVNC . В архиве есть XML-файл для интеграции с SSL Explorer.

Заходим в раздел "Управление расширениями/Extension Manager" в меню "Конфигурация/Configuration" (рис. 27).

Рис. 28. Экран закачки расширения. Нажмите на картинку для увеличения.

Нажимаем "Найти/Browse" , выбираем местоположение скачанного TightVNC. Нажимаем кнопку "Закачать/Upload" для установки на SSL Explorer.

Надо установить TightVNC на ПК, к которому нужен удалённый доступ. ПО можно скачать, например, . После скачивания, нужно установить его на ПК. Убедитесь, что оно установилось как служба. Отметим, что также нужно задать пароль для доступа к серверу TightVNC. Закладка настройки находится в разделе "Показать свойства пользователя/Show current user properties" - рис. 29.


Рис. 29. Настройка TightVNC.

Этот пароль будет нужно указывать при каждом подключении к ПК с клиента VNC (в том числе через SSL Explorer). Рекомендуем отметить "разрешить локальные подключения/allow loopback connections" в разделе администрирования (рис. 30).


Рис. 30. Администрирование TightVNC.

Примечание. SSL Explorer использует порт TCP 443, TightVNC - TCP 5900. На компьютере с серверной частью VNC брандмауэр должен разрешать входящие подключения на порт TCP 5900.

Шаг 3

Создадим ярлык для подключения TightVNC. Выбираем "Приложения/Applications" в меню "Управление ресурсами/Resource Management" (рис. 31).

Рис. 31. Приложения. Нажмите на картинку для увеличения.

Выбираем тип ярлыка. В нашем случае "TightVNC for Windows" (рис. 32).

Рис. 32. Ярлык. Нажмите на картинку для увеличения.

Указываем название и описание ярлыка (рис. 33).

Рис. 34. Настройки приложения. Нажмите на картинку для увеличения.

Нужно выбрать политику для ресурса. В нашем случае - "Все/Everybody" (рис. 35).

Рис. 35. Политика. Нажмите на картинку для увеличения.

На следующем экране (рис. 36) подтверждаем выбор. Если всё указано верно, то нажимаем "Завершить/Finish".

Рис. 37. Подтверждение настроек. Нажмите на картинку для увеличения.

В правом верхнем углу экрана нажимаем "Выход/Logout" для завершения сеанса Super User. Выполняем вход от имени только что созданного пользователя (в нашем случае John Smith). После входа видим список доступных ярлыков "My Favorites" , в котором показаны все установленные приложения.

Рис. 38. Консоль пользователя. Нажмите на картинку для увеличения.

Экран, показанный на рис. 38, - именно то, что увидит пользователь при работе с SSL Explorer. Выбираем TightVNC, после чего SSL Explorer запустит клиента Java VPN, настроит туннель и запустит клиента TightVNC для удалённого подключения к рабочему столу ПК. Если всё настроено правильно, то появится экран входа TightVNC, где нужно указать соответствующий пароль (рис. 39).

Рис. 39. Аутентификация TightVNC.

После аутентификации появится окно рабочего стола. На рис. 40 показан пример.

Рис. 40. Удалённый рабочий стол TightVNC. Нажмите на картинку для увеличения.

Для наглядной демонстрации настройки можно просмотреть Flash-ролик на сайте 3SP, в котором показаны основные этапы настройки удалённого администрирования. Несмотря на то, что в ролике показана настройка SSL Explorer со встроенным клиентом RDP, основные параметры для TightVNC будут те же. Более подробно о TightVNC можно почитать на сайте tightvnc.com .


  • Tutorial

Это руководство о том, как настроить noVNC для удалённого доступа к компьютерам на Windows.

Почему noVNC?

- У Windows есть «родное» средство для удалённого доступа - Remote Desktop Connection. Но оно есть не во всех версиях Windows - например нет в Home edition.
- Также существует множество VNC серверов и клиентов для любой версии Windows. Но для их использования нужно ставить VNC клиент. А бывают случаи, когда ставить ничего нельзя (ограничение прав), или нежелательно, чтобы не оставлять следов на чужом компьютере.
- Ещё есть Chrome Remote Desktop, которому на стороне клиента нужно только расширение в браузере. Но у меня был случай, когда протокол Хрома был заблокирован организацией (там почто всё было заблокировано), а noVNC использует обычный HTTP и поэтому работал.

Насколько я знаю, noVNC - единственное средство, которое позволяет подключиться к удалённому компьютеру без установки какого-либо клиента - используется лишь браузер.
Ещё есть SPICE , но для него я не нашёл сервера под Windows.

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

Необходимым условием является проброс портов, или белый IP удалённого компьютера. Также можно воспользоваться VNC repeater. Но это уже выходит за рамки этой статьи.

Общая схема

Сначала мы поставим обычный VNC сервер на порт 5900.

Затем поставим noVNC и WebSockify на порт 5901.

Цель, чтобы получилось приблизительно вот так:


Теперь запускаем command prompt с администраторскими правами:


Запускаем WebSockify:

C:\> cd c:\noVNC\websockify c:\noVNC\websockify> websockify.exe 5901 127.0.0.1:5900 --web c:\noVNC\noVNC-master WARNING: no "resource" module, daemonizing support disabled WebSocket server settings: - Listen on:5901 - Flash security policy server - Web server. Web root: c:\noVNC\noVNC-master - No SSL/TLS support (no cert file) - proxying from:5901 to 127.0.0.1:5900
Первый параметр выше - порт на котором noVNC будет слушать: 5901 . Этот порт нужно сделать доступным для клиентов.

Второй параметр - IP и порт, где стоит VNC сервер: 127.0.0.1:5900

Третий параметр --web инструктирует noVNC, чтобы он отдавал содержимое директории c:\noVNC\noVNC-master по HTTP(s). По умолчанию noVNC отдаёт только VNC вебсокет, но этот параметр позволяет иметь и HTTP сервер на этом же порту.

В директории c:\noVNC\noVNC-master переименуйте файл vnc.html в index.html , чтобы он отдавался по умолчанию.

Теперь noVNC клиент должен быть доступен на порту 5901:


Попробуйте также открыть noVNC страницу с другого компьютера/смартфона, чтобы удостовериться, что она доступна снаружи. Если нет - то проверьте:

Что у вас Windows Firewall не блокирует внешние подключения на этот порт,
- что ваш роутер правильно перенаправляет запросы на этот порт на нужный компьютер; если надо гуглите «проброс портов».

Соединяемся (Connect), вводим VNC пароль и видим рабочий стол удалённого компьютера!

Если что-то пошло не так, то ошибки должны показаться в нашей консоли.

Остановить noVNC сервер можно нажав Ctrl-C в консоли. Описанная выше конфигурация работает по HTTP (и по WS).

Добавляем SSL с самоподписанным сертификатом

Добавлять SSL - необязательно. Создать самоподписанный сертификат можно вот так:

Openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
Для Windows openssl можно взять .

В результате получаем файл self.pem, на который надо указать при старте noVNC:

C:\noVNC\websockify> websockify.exe 5901 127.0.0.1:5900 --web c:\noVNC\noVNC-master --cert=c:\noVNC\self.pem
Теперь у нас работает HTTPS и WSS (WebSocket Secure). Для WSS в настройках (Settings) нужно указать Encrypt. Интересно, что noVNC использует один и тот же порт для HTTP и HTTPS - он «умеет» различать запросы и правильно отвечать.

Так как сертификат самоподписанный, то в браузере нужно будет принять этот сертификат.

Let"s Encrypt

У меня нет инструкций о том, как настроить систему, чтобы Let"s Encrypt автоматически генерировал сертификат специально для нашей системы. Для этого потребовалось бы, чтобы noVNC работал на порту 80, что конечно же возможно, но может быть неудобно, и найти способ интегрировать certbot, чтобы эти файлы публиковались в нужную директорию. Думаю, что это возможно, но я этого не сделал. Если вы допилите - поделитесь в комментариях.

В моём случае, у меня уже есть домашний сервачок с NGINX и DDNS именем, который настроен автоматически получать сертификат от Lets Encrypt.

Вы можете запустить что-то похожее у себя. есть инструкции о настройке Let"s Encrypt для Linux и Windows.

Поэтому для noVNC я просто использую уже существующие pem -файлы, сгенерированные для nginx .

Let"s Encrypt создаёт следующие файлы:

Cert.pem: Your domain"s certificate chain.pem: The Let"s Encrypt chain certificate fullchain.pem: cert.pem and chain.pem combined privkey.pem: Your certificate"s private key
На Ubuntu их можно найте по вот такому пути: /etc/letsencrypt/live/your_domain_name

Нужно скопировать (объединить) fullchain.pem и privkey.pem в один файл, например назовём его encrypt.pem , и этот файл мы будем использовать для noVNC .

Конечно, работать это будет только если nginx сервер и noVNC - на одном домене. Порты могут быть разными.

И нужно не забывать, что сертификаты годны только несколько месяцев, а потом надо копировать обновлённые файлы.

Добавляем noVNC, как Windows-сервис

Загружаем zip-архив , и распаковываем файлы оттуда так, чтобы они лежали в той же папке, где и файл websockify.exe , то есть в нашем случае в c:\noVNC\websockify .

При запуске, сервис будет использовать параметры из файла noVNCConfig.ini . Вот пример моего конфига:

5901 127.0.0.1:5900 --web C:\noVNC\noVNC-master --cert=c:\noVNC\encrypt.pem
В консоли, запущенной с администраторскими привилегиями создаём новый сервис:

Sc create "noVNC Websocket Server" binPath= "c:\noVNC\websockify\noVNC Websocket Service.exe" DisplayName= "noVNC Websocket Server"
Если нужно будет удалить сервис, то вот так:

Sc delete "noVNC Websocket Server"
Открываем сервисы (Control Panel → Administrative Tools → Services) и запускаем noVNC Websocket Server. Также здесь можно настроить, чтобы сервис стартовал каждый раз вместе с Windows:

Известные недоработки

Раскладка клавиатуры

Я обнаружил, что русская раскладка клавиатуры работает довольно необычным образом:
Если у клиента выбран русский язык, то на удалённый компьютер нажатия клавиш не передаются вообще.remote desktop Добавить метки

VNC (расшифровывается как Virtual Network Computing) - это система, позволяющая вам использовать клавиатуру и мышь для взаимодействия с графическим интерфейсом пользователя на удалённом сервере. Эта система позволяет управлять файлами, программным обеспечением и настройками на удалённом сервере пользователям, чувствующим себя некомфортно при работе с инструментами командной строки.

В этой статье мы опишем процесс установки VNC на сервер с Ubuntu 16.04, а также узнаем, как создать защищённое соединение с этим сервером с помощью SSH туннеля. В качестве сервера VNC мы будем использовать TightVNC - быстрый и лёгкий пакет для удалённого доступа. Благодаря этому продукту наше VNC соединение будет работать надёжно даже на медленном соединении с Интернетом.

Перед установкой

Для следования описанным в этой статье инструкциям вам понадобятся:

    Дроплет с Ubuntu 16.04, настроенный согласно шагам, описанным в , включая создание не-рутового (non-root) пользователя с привилегиями sudo.

    Локальный компьютер с клиентом VNC, поддерживающим соединения через SSH туннель. Если вы используете Windows, вы можете воспользоваться TightVNC, RealVNC или UltraVNC. Пользователи Mas OS X могут использовать встроенную утилиту Screen Sharing, или воспользоваться кросс-платформенным приложением, например, RealVNC. Пользователи Linux имеют широкий выбор: vinagre , krdc , RealVNC, TightVNC и др.

Шаг 1 - Установка 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 созданием файлов конфигурации по умолчанию, а также созданием информации для соединения с нашим сервером. После установки этих пакетов мы можем начать настраивать наш сервер.

Шаг 2 - Настройка сервера 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, затем сохраните и закройте файл.

#!/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

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

Теперь проверим соединение с вашим 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 своего клиента.

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

Вы можете осуществлять доступ к файлам в вашей домашней директории с помощью файлового менеджера или из командной строки:

Шаг 4 - Создание файла сервиса VNC

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

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

/etc/systemd/system/[email protected]

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

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

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

  • vncserver -kill:1
  • sudo systemctl start vncserver@1

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

  • sudo systemctl status vncserver@1

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

Название Вывод

[email protected] - TightVNC server on Ubuntu 16.04 Loaded: loaded (/etc/systemd/system/[email protected]; 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: pam_unix(login:session): session opened for user finid by (uid=0) systemd: Started TightVNC server on Ubuntu 16.04.

Заключение

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

Вопрос распространения ПО всегда актуален. Теперь он касается TightVNC. Можно просто прикрепить к политике msi-пакет. Но настройки придётся вносить отдельно: либо вручную, либо батником.

Вкратце - ниже.

Создаем батник следующего содержания:

net use O: \\%1\C$

copy vnc.msi O:\ /y

copy vnc.reg O:\ /y

psexec \\%1 msiexec /i C:\vnc.msi /quiet /norestart

psexec \\%1 regedit -s C:\vnc.reg

net use O: /delete /y

O: - название сетевого диска;

%1 - имя удаленного компьютера (можно подать как параметр при вызове батника из командной строки или же заменить прямо в батнике на нужное имя);

vnc.msi - установочный файл TightVNC, должен лежать в той же папке, что и батник, тестировалось на версии TightVNC 2.6.4 32-bit;

vnc.reg - предварительно экспортированная в файл ветка реестра HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC с машины, на которой уже установлен и настроен TightVNC (ветка содержит такие параметры, как пароль для подключения, файл должен лежать в той же папке, что и батник).

Если удобней стартовый скрипт - пожалуйста! Если доверяем только себе - вручную через psexec.

P.S. Рег-файлы под Windows7 и Windows XP отличаются.

P.S.2. DFMirage-драйвер дисплея ставить тоже нужно, но с этим надо разбираться отдельно. Без него VNC-сервер может знатно тормозить.