Для организации удаленного подключения к компьютерам и серверам используются различные прикладные протоколы. Для операционных систем семейства Windows «родным» протоколом является RDP, для Unix/Linux используется протокол SSH. Однако, существует еще один способ подключения — система под названием VNC. В данной статье мы произведем установку сервера VNC, используя реализацию TightVNC, на операционную систему Ubuntu версии 22.04, а также произведем подключение к серверу VNC.
cloud
VNC (сокращение от Virtual Network Computing, «виртуальные сетевые вычисления») — это система для удаленного доступа к компьютерам и серверам, основанная на протоколе RFB (Remote FrameBuffer, «удалённый кадровый буфер»). VNC передает нажатия на клавиши клавиатуры и движения мыши с одного компьютера на другой, используя сетевое соединение. VNC не зависит от платформы и является кроссплатформенным решением.
VNC состоит из сервера и клиента. Сервер предоставляет доступ к экрану устройства а клиент получает изображение с сервера.
В качестве реализации VNC мы установим программу TightVNC. Среди достоинств можно выделить открытый исходный код, оптимизацию работы при медленном соединение и большую поддержку сторонних клиентских программ для подключения по VNC.
VNC может чем-то напоминать протокол RDP. Однако несмотря на то, что эти два протокола выполняют одну и ту же задачу, а именно организуют удаленное подключение до устройства, у них довольно много отличий.
Для установки и настройки VNC нам потребуется:
Чтобы арендовать облачный или выделенный сервер в Timeweb Cloud, необходимо пройти регистрацию.
Переходим по ссылке для регистрации нового пользователя. Мы выберем регистрацию на физическое лицо и заполним следующие данные:
После регистрации на указанный адрес почты придет сообщение с ссылкой для активации аккаунта и входа в панель — перейдите по ней.
После того, как учетная запись была создана и активирована, можно арендовать облачный сервер.
1) Переходим на страницу авторизации и входим в аккаунт при помощи.
2) После успешной авторизации отобразится панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».
3) Выбираем операционную систему, которая будет установлена на сервер. В нашем случае нам необходим сервер с ОС Ubuntu версии 22.04.
4) Выбираем регион, в котором будет находиться наш сервер. Выбирать рекомендуется тот регион, который ближе всего находится к вам физически. У каждого доступного региона справа вверху отображается ping, т.е. время, необходимое для передачи данных с вашего компьютера на сервер. Чем меньше указанное время, тем быстрее будет осуществляться передача данных.
5) Далее выбираем необходимую конфигурацию для сервера. Для использования системы VNC а именно для его реализации TightVNC и графической оболочки Xfce достаточно выбрать одноядерный процессор, 2 ГБ оперативной памяти и 30 ГБ жесткого диска. В реальности вам необходимо выбирать именно ту конфигурацию, которая будет удовлетворять вашим потребностям. Выбираем соответствующий тариф.
6) Далее необходимо решить, будет ли сервер доступен из внешний сети или же только из приватной (частной) сети.
7) По желанию можно оформить дополнительные услуги, включая резервные копии и защиту от DDoS-атак (последняя доступна в Санкт-Петербурге и Москве).
8) Также заранее можно загрузить SSH-ключ, чтобы не входить на север при помощи пароля.
9) Можно задать необходимое имя для сервера которое будет отображаться в панели управления, а также выбрать проект.
10) Для создания сервера необходимо нажать на кнопку «Заказать».
Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP-адрес, логин и пароль для подключения.
Для начала установим VNC-сервер TightVNC и графическую оболочку (графический интерфейс) Xfce. Установка оболочки необходима в связи с тем, что по умолчанию создаваемые серверы поставляются без графического интерфейса. Мы выбрали Xfce, так как он менее требователен к ресурсам и обеспечивает наилучшую производительность с TightVNC, однако вы можете использовать любую другую оболочку, например, KDE, GNOME или LXDE.
Все команды, приведенные ниже, необходимо выполнять от имени root-пользователя или от имени обычного пользователя с правами sudo
.
1) Обновляем список пакетов и устанавливаем необходимые пакеты:
apt update && apt -y install xfce4 xfce4-goodies tightvncserver
2) Если вы используете firewall UFW (Uncomplicated Firewall), iptables или другое ПО для контроля трафика, то необходимо открыть порт 5091.
При использовании UFW необходимо выполнить следующую команду:
ufw allow 5901
Также на время теста UFW можно выключить:
systemctl stop ufw
При использовании iptables необходимо выполнить следующие команды:
Для входящих соединений на порт 5901:
iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
Для исходящих соединений на порт 5901:
iptables -I OUTPUT -p tcp --sport 5901 -j ACCEPT
После завершения установки необходимо предварительно настроить VNC-сервер.
1) Первым делом необходимо задать пароль, при помощи которого будет осуществляться доступ до удаленного хоста. Для этого запускаем команду vncserver и задаем пароль:
vncserver
Важно отметить: длина пароля должна быть от 6 до 8 символов. Если в строке ввода пароля вы введете пароль более 8 символов, то TightVNC обрежет его длину до 8 знаков и сообщит об этом в терминале:
После этого вводим пароль еще раз.
2) Далее система дополнительно предложит задать пароль для просмотра — view-only password. Пользователи, которые подключаться к системе с паролем для просмотра, не смогут управлять удаленным устройством с помощью мыши и клавиатуры. Им будет доступен только режим просмотра. Эта опция будет полезна, если вы хотите только продемонстрировать что-то другим пользователям, без необходимости предоставлять им управление. Чтобы задать пароль для просмотра, введите в терминале y, далее введите пароль, который будет использоваться для просмотра, и повторите его ввод.
Если же вам не требуется пароль для просмотра, достаточно ввести n
:
После этого TightVNC выведет следующую информацию:
Разберем эти данные:
Creating default startup script /root/.vnc/xstartup
— создан скрипт-файл xstartup
в директории /root/.vnc
, в котором содержатся настройки VNC-сервера.Starting applications specified in /root/.vnc/xstartup
— создан скрипт для запуска xstartup
в директории /root/.vnc
.Log file is /root/.vnc/2857364-bi08079.twc1.net:1.log
— создан лог-файл 2857364-bi08079.twc1.net:1.log
в директории /root/.vnc
, в который будет записываться отладочная информация, а также информация об ошибках.Стоит отметить, что перечисленные выше файлы будут созданы в домашней директории того пользователя, из-под которого запускалась команда vncserver
.
3) Для следующей настройки VNC-сервер необходимо остановить, завершив процесс vncserver
:
vncserver -kill :1
4) Прежде чем вносить правки в основной конфигурационный файл xstartup
, необходимо сделать его резервную копию:
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
Если вы ошибетесь при редактировании конфигурационного файла или получите ошибку при запуске VNC-сервера, у вас будет возможность сделать откат до первоначального файла с настройками. Для этого будет нужно удалить измененный файл xstartup
:
rm xstartup
И вернуть файлу xstartup.bak
его первоначальное имя xstartup
:
mv xstartup.bak xstartup
5) Открываем на редактирование при помощи любого текстового редактора файл xstartup
:
nano /root/.vnc/xstartup
В конце файла прописываем параметр startxfce4
.
Сохраняем изменения и выходим из файла.
6) Запускаем VNC-сервер при помощи команды:
vncserver
Программа оповестит о том, что используется конфигурационный файл xstartup
, а также отобразит полный путь до файла, в который записываются логи.
7) Дополнительно создадим Unit-файл с целью управления TightVNC при помощи системы инициализации systemd
, т.к. по умолчанию у TightVNC отсутствует свой демон. Для этого создаем новый unit-файл с именем vncserver.service
:
nano /etc/systemd/system/vncserver.service
Добавляем в него следующее содержимое:
[Unit]
Description=TightVNC server
After=syslog.target network.target
[Service]
Type=forking
User=root
PAMName=login
PIDFile=/root/.vnc/%H:1.pid
ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver
ExecStop=/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi-user.target
Сохраняем изменения и выходим из файла.
8) После этого перезапускаем systemd
при помощи команды:
systemctl daemon-reload
9) Добавляем сервис TightVNC в автозагрузку:
systemctl enable --now vncserver
10) Теперь можно проверить статус VNC-сервера, выполнив команду:
systemctl status vncserver
Если в статусе отображается active (running)
, то TightVNC успешно запущен. Если TightVNC запустить не удастся, то причину ошибки необходимо искать в лог-файле.
Для подключения к серверу по VNC существует обширный список клиентских программ, как платных, так и бесплатных. Для Windows можно использовать такие программы, как UltraVNC и TightVNC Viewer. Для Linux-систем можно использовать программу Remmina, а для macOS — RealVNC.
Рассмотрим подключение при помощи программы TightVNC Viewer, запущенной на операционной системе Windows 10. Во время установки TightVNC Viewer пользователь может выбрать, нужно ли устанавливать сам сервер VNC или только клиент. Запускаем программу и вводим адрес удаленного VNC-сервера в формате:
IP_адрес::порт
Обратите внимание, что порт указывается через символ ::
(применимо только для программы TightVNC, в остальных программах указывается стандартное значение адрес:порт
). В данном примере адрес сервера 80.242.57.93 и порт 5901. После ввода адреса нажимаем на кнопку Connect:
При появлении окна Vnc Authentication необходимо ввести пароль, который был задан на этапе настройки TightVNC.
После нажатия на кнопку ОK появится окно с графическим интерфейсом удаленного рабочего стола:
При использовании TightVNC Viewer сессии можно сохранять в отдельный файл с целью быстрого соединения до необходимого хоста. Для этого кликните по иконке дискеты на панели инструментов сверху:
Задайте удобное имя. Файл подключения будет сохранен в формате .vnc
:
Также программа предложит сохранить пароль, который используется для подключения с VNC серверу:
После этого достаточно запустить файл с подключением и сразу же откроется сессия VNC.
Для обеспечения безопасности подключения по протоколу VNC можно использовать SSH-туннели.
Подготовили для вас выгодные тарифы на облачные серверы
VNC — система для удаленного доступа к компьютерам и серверам. Ее удобно использовать во время предоставления технической поддержки или проведения других необходимых работ на сервере. В инструкции мы пошагово описали процесс установки и настройки TightVNC на сервер с Ubuntu и продемонстрировали, как организовать подключение к серверу по VNC. Благодаря простой настройке вы можете легко организовать свой VNC-сервер, не затрачивая много времени.
Про настройку защиты соединения VNC ничего не сказано. По умолчанию трафик VNC не зашифрован, поэтому через интернет передавать не безопасно. Либо завернуть внутрь VPN, тогда сначала нужно подключать VPN соединение, а потом уже соединяться с VNC сервером по приватному адресу. Либо же может существует какая-нибудь OpenSSL надстройка над VNC, вот про это хотелось бы тоже узнать.
Добрый день! В качестве защиты VNC-соединения можно использовать VNC поверх SSH (SSH-туннелирование). Для создания туннеля можно воспользоваться сторонними клиентскими программами, такими как Putty или MobaXterm.
Мы возьмем в работу и подготовим отдельную инструкцию по организации защищенного подключения про протоколу VNC 💙
Добрый день! Сказали — сделали :) Александр подготовил инструкцию о том, как настроить защищенное подключение по VNC.