Как установить и настроить VNC-сервер в Ubuntu

Читать первым в Telegram

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

В данной статье будут описаны процессы установки и настройки VNC-сервера в Ubuntu 18.04 Desktop Edition при помощи программы tigervnc-server.

Среда тестирования

VNC Server: 192.168.56.108
VNC Client: 192.168.56.2

Установка среды рабочего стола в Ubuntu

Как было уже сказано, VNC — это система удалённого доступа к рабочему столу, поэтому на вашем сервере Ubuntu должна быть установлена среда рабочего стола. Вы можете установить любую, понравившуюся вам, среду, выполнив соответствующие команды, описанные ниже. Мы же установим Ubuntu Gnome (Official flavor).

$ sudo apt-get install ubuntu-desktop		    #Default Ubuntu desktop
$ sudo apt install ubuntu-gnome-desktop	        #Ubuntu Gnome (Official flavor)
$ sudo apt-get install xfce4			        #LXDE
$ sudo apt-get install lxde			            #LXDE
$ sudo apt-get install kubuntu-desktop		    #KDE

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

Tigervnc-server — это высокоскоростная, кроссплатформенная VNC-программа, которая запускает Xvnc-сервер и начинает параллельные сеансы Gnome или любой другой среды рабочего стола на рабочем столе VNC.

Чтобы установить TigerVNC-сервер и другие необходимые пакеты в Ubuntu, пропишите следующую команду:

$ sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-xorg-extension tigervnc-viewer

Теперь запустите VNC-сервер, выполнив команду vncserver от имени обычного пользователя. После чего создастся начальная конфигурация, хранящаяся в директории $HOME/.vnc. Также не забудьте установить пароль для входа.

Введите пароль (длиной не менее шести символов) и подтвердите его. Если потребуется, вы можете установить пароль “только для просмотра”:

$ vncserver
$ ls -l ~/.vnc

Запуск VNC-сервера

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

$ vncserver -kill :1

Остановка VNC-сервера

Чтобы настроить GNOME или любой другой выбранный вами рабочий стол, создайте файл с именем xstartup в каталоге конфигурации:

$ vi ~/.vnc/xstartup

Допишите следующие строки в файл. Эти команды будут автоматически выполнены, когда вы запустите или перезапустите TigerVNC-сервер. Обратите внимание, что команды могут различаться в зависимости от установленной среды рабочего стола:

#!/bin/sh
exec /etc/vnc/xstartup
xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

Сохраните файл и установите соответствующее разрешение для файла, чтобы он мог быть выполнен:

$ chmod 700 ~/.vnc/xstartup

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

Кроме того, изначально VNC использует TCP-порт 5900+N, где N — это номер дисплея. В таком случае :1 означает, что VNC-сервер будет работать с номером порта дисплея 5901.

$ vncserver :1 -localhost -geometry 1024x768 -depth 32

Запускаем VNC-сервер для подключения

Чтобы вывести все сеансы VNC-сервера в вашей системе, используйте следующую команду:

$ vncserver -list

Вывод VNC-сессий

После запуска VNC-сервера проверьте порт, на котором он работает, используя команду netstat:

$ netstat -tlnp

Проверка работающих портов VNC-сервера

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

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

Используя SSH-туннелирование, вы можете безопасно перенаправлять трафик с локального компьютера через порт 5901 на VNC-сервер на том же порту.

На клиентской машине Linux, откройте новое окно терминала и выполните следующую команду для создания SSH-туннеля к VNC-серверу:

$ ssh -i ~/.ssh/ubuntu18.04 -L 5901:127.0.0.1:5901 -N -f -l tecmint 192.168.56.108

Затем установите vncviewer-клиент, наподобие TigerVNC Viewer, как показано ниже (вы можете установить любой клиент на ваше усмотрение):

$ sudo apt install tigervnc-viewer		        #Ubuntu/Debian
$ sudo yum install tigervnc-viewer		        #CnetOS/RHEL
$ sudo yum install tigervnc-viewer		        #Fedora 22+
$ sudo zypper install tigervnc-viewer	        #OpenSUSE
$ sudo pacman -S tigervnc			            #Arch Linux

После завершения установки запустите ваш VNC-клиент, укажите адрес localhost:5901 для подключения к дисплею 1, как показано ниже:

$ vncviewer localhost:5901

Либо откройте его из системного меню, введите адрес, который указан выше, и нажмите Connect.

Откройте VNC-клиент для подключения

Вас попросят ввести созданный ранее пароль для входа в VNC, введите его и нажмите OK, чтобы продолжить.

Ввод пароль для входа в VNC

Если пароль введён верно вы попадёте в интерфейс входа в среду вашего рабочего стола. Затем введите пароль для доступа к рабочему столу.

Доступ к интерфейсу входа в среду рабочего стола

Доступ к рабочему столу Ubunty с помощью VNC

Замечание: если вы заботитесь о безопасности, вы могли заметить, что программа просмотра VNC предупреждает “connection not encrypted” (“соединение не зашифровано”), даже при включенном SSH-туннелировании.

Это происходит из-за того, что он предназначен для использования определённых схем безопасности, отличных от SSH-туннелирования, при попытке аутентификации на сервере. Однако, не смотря ни на что, соединение является безопасным, если вы включили SSH-туннелирование.

Создание Systemd файла для TigerVNC-сервера

Чтобы управлять VNC-сервером в systemd, то есть запускать, останавливать и перезапускать службу VNC по мере необходимости, нам необходимо создать для него unit файл с правами root в каталоге /etc/systemd/system/

$ sudo vim /etc/systemd/system/[email protected]

Затем добавьте следующие строки в файл:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=tecmint
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :
ExecStart=/usr/bin/vncserver :%i -localhost no -geometry 1024x768
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Сохраните файл и закройте его.

Перезагрузите конфигурацию управления systemd, чтобы прочитать недавно созданный unit файл, следующим образом:

$ sudo systemctl daemon-reload

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

$ sudo systemctl start vncserver@1
$ sudo systemctl enable vncserver@1
$ sudo systemctl status vncserver@1

Запуск и проверка статуса VNS

Спасибо за внимание! Надеемся, что данная статья помогла вам.

Удачи!

Оригинальная статья: How to Install and Configure VNC Server on Ubuntu

Поддержать проект

Социальные сети проекта:

Подпишись, чтобы ничего не пропустить!