Больше не нужно искать работу мечты — присоединяйтесь к команде Клауда

Установка и настройка VNC на сервере Ubuntu

Александр Бархатов
Александр Бархатов
Технический писатель
20 мая 2024 г.
510
11 минут чтения
Средний рейтинг статьи: 5

Для организации удаленного подключения к компьютерам и серверам используются различные прикладные протоколы. Для операционных систем семейства Windows «родным» протоколом является RDP, для Unix/Linux используется протокол SSH. Однако, существует еще один способ подключения — система под названием VNC. В данной статье мы произведем установку сервера VNC, используя реализацию TightVNC, на операционную систему Ubuntu версии 22.04, а также произведем подключение к серверу VNC.

Что такое VNC?

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

VNC состоит из сервера и клиента. Сервер предоставляет доступ к экрану устройства а клиент получает изображение с сервера.

В качестве реализации VNC мы установим программу TightVNC. Среди достоинств можно выделить открытый исходный код, оптимизацию работы при медленном соединение и большую поддержку сторонних клиентских программ для подключения по VNC.

Отличие системы VNC от протокола RDP

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

  • RDP — это проприетарный протокол, разработанный компанией Microsoft, который предназначен только для операционных систем семейства Windows. VNC — это кроссплатформенное решение, которое можно запустить на любой ОС: Windows, Unix/Linux, macOS. Также VNC имеет открытый исходный код и распространяется бесплатно.
  • Принцип работы RDP заключается в передаче видеопотока от сервера клиенту при помощи устройства видеозахвата. После того как клиент успешно инициировал соединение, включается трансляция изображения удаленного рабочего стола. VNC тоже использует модель «клиент-сервер», но принцип отрисовки изображения у него другой — VNC отправляет фактические значения пикселей удаленного рабочего стола клиенту. 
  • В плане безопасности у RDP присутствует встроенное шифрование и поддержка интеграции с сервисом аутентификации Windows. В VNC необходимо дополнительно настраивать уровни безопасности.
  • Помимо подключения к удаленным устройствам, RDP также позволяет передавать файлы, использовать «проброс» устройств, включая съемные носители (USB), жесткие диски и принтеры. VNC имеет базовый функционал, который по умолчанию поддерживает только удаленный доступ.

Предварительные требования

Для установки и настройки VNC нам потребуется:

  • Сервер или виртуальная машина с предустановленной ОС Ubuntu 22.04.
  • Заранее установленная клиентская программа для подключения к VNC-серверу. Использовать можно любую операционную систему, так как VNC является кроссплатформенным решением. Установить клиент можно на ваш домашний или рабочий компьютер. Список некоторых клиентских программ для подключения перечислен в разделе «Как подключиться к серверу по VNC». 

Регистрация в Timeweb Cloud

Чтобы арендовать облачный или выделенный сервер в 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

Для начала установим 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-сервера TightVNC

После завершения установки необходимо предварительно настроить VNC-сервер.

1) Первым делом необходимо задать пароль, при помощи которого будет осуществляться доступ до удаленного хоста. Для этого запускаем команду vncserver и задаем пароль:

vncserver

Image9

Важно отметить: длина пароля должна быть от 6 до 8 символов. Если в строке ввода пароля вы введете пароль более 8 символов, то TightVNC обрежет его длину до 8 знаков и сообщит об этом в терминале:

Image2

После этого вводим пароль еще раз. 

2) Далее система дополнительно предложит задать пароль для просмотра — view-only password. Пользователи, которые подключаться к системе с паролем для просмотра, не смогут управлять удаленным устройством с помощью мыши и клавиатуры. Им будет доступен только режим просмотра. Эта опция будет полезна, если вы хотите только продемонстрировать что-то другим пользователям, без необходимости предоставлять им управление. Чтобы задать пароль для просмотра, введите в терминале y, далее введите пароль, который будет использоваться для просмотра, и повторите его ввод. 

Если же вам не требуется пароль для просмотра, достаточно ввести n:

Image4

После этого TightVNC выведет следующую информацию:

Image6

Разберем эти данные:

  • 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

Image13

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

Image12

В конце файла прописываем параметр startxfce4.

Image7

Сохраняем изменения и выходим из файла.

6) Запускаем VNC-сервер при помощи команды:

vncserver

Image1

Программа оповестит о том, что используется конфигурационный файл 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

Image15

Сохраняем изменения и выходим из файла.

8) После этого перезапускаем systemd при помощи команды:

systemctl daemon-reload

9) Добавляем сервис TightVNC в автозагрузку:

systemctl enable --now vncserver

Image10

10) Теперь можно проверить статус VNC-сервера, выполнив команду:

systemctl status vncserver

Image17

Если в статусе отображается active (running), то TightVNC успешно запущен. Если TightVNC запустить не удастся, то причину ошибки необходимо искать в лог-файле.

Как подключиться к серверу по VNC

Для подключения к серверу по 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:

Image16

При появлении окна Vnc Authentication необходимо ввести пароль, который был задан на этапе настройки TightVNC.

Image18

После нажатия на кнопку ОK появится окно с графическим интерфейсом удаленного рабочего стола:

Image14

При использовании TightVNC Viewer сессии можно сохранять в отдельный файл с целью быстрого соединения до необходимого хоста. Для этого кликните по иконке дискеты на панели инструментов сверху:

Image3

Задайте удобное имя. Файл подключения будет сохранен в формате .vnc:

Image8

Также программа предложит сохранить пароль, который используется для подключения с VNC серверу:

Image5

После этого достаточно запустить файл с подключением и сразу же откроется сессия VNC. 

Для обеспечения безопасности подключения по протоколу VNC можно использовать SSH-туннели.

Заключение

VNC — система для удаленного доступа к компьютерам и серверам. Ее удобно использовать во время предоставления технической поддержки или проведения других необходимых работ на сервере. В инструкции мы пошагово описали процесс установки и настройки TightVNC на сервер с Ubuntu и продемонстрировали, как организовать подключение к серверу по VNC. Благодаря простой настройке вы можете легко организовать свой VNC-сервер, не затрачивая много времени. 

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
20 мая 2024 г.
510
11 минут чтения
Средний рейтинг статьи: 5
Комментарии 2
Righteous Hippie
Righteous Hippie
21.06.2024, 03:05

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

Timeweb
Timeweb
25.06.2024, 08:56

Добрый день! В качестве защиты VNC-соединения можно использовать VNC поверх SSH (SSH-туннелирование). Для создания туннеля можно воспользоваться сторонними клиентскими программами, такими как Putty или MobaXterm. Мы возьмем в работу и подготовим отдельную инструкцию по организации защищенного подключения про протоколу VNC :blue_heart: