Содержание:
VNC — Virtual Network Computing — графическая система совместного доступа к рабочему столу, с помощью которой можно удаленно управлять другим компьютером используя клавиатуру и мышь. VNC имеет открытый исходный код и часто используется в работе в различных организациях. Сегодня мы установим и настроем сервер VNC на ОС Убунту и попробуем к нему подключиться по сети.
В данной инструкции я использовал Ubuntu Server 20.04
Установка графического окружения
Так как VNC используется для подключения к графическим оболочкам а мы устанавливаем его на удаленный сервер на котором отсутствует GUI, то сначала нам нужно позаботиться о наличие граф. среды на сервере.
Традиционно для такой задачи как удаленный доступ предпочтительно использование легковесного окружения такого, как LXDE или XFCE. Я привык работать с DE XFCE, поэтому буду показывать установку на его примере.
Установка XFCE
Выполним команду в терминале, которая установит графическое окружение:
sudo apt install xfce4 xfce4-goodies -y
Если во время установки возникнет окно с вопросом о том, какой DM использовать, то традиционно для xfce выбираем lightdm, хотя это ни на что не повлияет в дальнейшем:
Дожидаемся завершения установки — этот процесс может занять длительное время, все зависит от характеристик железа и скорости соединения с интернет:
Установка VNC сервера
Далее нам необходимо произвести установку непосредственно сервера, и в качестве оного я выбрал TigerVNC. На данный момент он имеет активную поддержку и пользуется популярностью.
Используем команду:
sudo apt install tigervnc-standalone-server
Настройка VNC
Установка пароля
Для начала необходимо установить пароль для доступа с помощью команды:
vncpasswd
Данную команду нужно выполнять от имени своего пользователя. Будет предложено ввести и подтвердить новый пароль, а затем будет вопрос о входе «только для просмотра», если указать «y», то подключенный пользователь не сможет управлять удаленной машиной, поэтому тут мы указываем «n»:
Настройка xstartup
Далее нужно создать файл ~/.vnc/xstartup
(/home/USER/.vnc/xstartup) и установить ему разрешение на исполнение:
touch ~/.vnc/xstartup chmod +x ~/.vnc/xstartup
Затем открываем данный файл в текстовом редакторе:
nano ~/.vnc/xstartup
Я использую редактор nano, установить его можно командой sudo apt install nano
. После окончания редактирования файла нужно нажать CTRL+O и Enter для сохранения и CTRL+X для закрытия файла.
Вписываем в него следующие параметры:
#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4
Настройка разрешения
Далее создаем файл ~/.vnc/config:
touch ~/.vnc/config
И указываем в нем желаемое разрешения экрана, у меня в примере это 1024х768. Открываем файл в текстовом редакторе:
nano ~/.vnc/config
И вписываем следующее:
geometry=1024x768 dpi=96
Запуск VNC срвера
На данном этапе необходимые установки произведены и мы можем запустить сервер. Делается это командой:
vncserver
В выводе команды указано то, что сервер стартовал на порту 5901, определяется это с помощью строки: New 'proto-vb-server:1 (mike)' desktop at :1 on machine proto-vb-server
в которой «:1» и есть указатель на номер порта. Vnc стартует на 5900 + цифра, указанная после двоеточия порту.
Для того, чтобы посмотреть список запущенных сеансов используется команда:
vncserver -list
Для остановки сеанса нужно использовать:
vncserver -kill :НОМЕР
В нашем примере команда будет выглядеть так:
vncserver -kill :1
Добавление юнита Systemd
Для того, чтобы можно было настроить автозапуск VNC и удобнее им управлять будем пользоваться VNC как сервисом.
Создаем файл /etc/systemd/system/vncserver@.service
:
sudo touch /etc/systemd/system/vncserver@.service
Открываем файл в текстовом редакторе:
sudo nano /etc/systemd/system/vncserver@.service
И вписываем в него следующее:
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple User=ИМЯ_ПОЛЬЗОВАТЕЛЯ PAMName=login PIDFile=/home/%u/.vnc/%H%i.pid ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver :%i -localhost no -alwaysshared -fg ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Тут нужно обратить внимание на необходимость заменить ИМЯ_ПОЛЬЗОВАТЕЛЯ на имя своей учетной записи.
После этого выполняем команду:
sudo systemctl daemon-reload
Как пользоваться
Запуск сервиса:
sudo systemctl start vncserver@1.service
Остановка сервиса:
sudo systemctl stop vncserver@1.service
Добавить в автозапуск:
sudo systemctl enable vncserver@1.service
Проверить статус сервиса:
sudo systemctl status vncserver@1.service
Перезапуск сервиса:
sudo systemctl restart vncserver@1.service
В командах выше мы можем изменить номер порта при необходимости. Можно указать, например не @1, а @2 и т.д.
Подключение к VNC из Windows
Теперь попробуем подключиться к только что установленному, настроенному и запущенному серверу. Из Windows это можно сделать с помощью программы Vncviewer. Скачать ее можно с официальной страницы загрузки: https://www.realvnc.com/en/connect/download/viewer/ .
Запускаем Viewer:
В адресною строку, в которой написано «Enter a VNC Server address or search» вводим ip адрес сервера и порт через двоеточие, например у меня это 192.168.0.104:5901:
Ждем подключения:
Подтверждаем соединение:
Вводим пароль:
Попадаем в удаленный сеанс:
Подключение к VNC с использованием SSH туннеля из Ubuntu
Для того, чтобы сделать наше соединение более безопасным, например, если удаленный компьютер находится не в одной с вами сети, то можно подключаться к VNC используя защищенные соединение посредством SSH туннеля.
Перепишем файл vncserver@.service
Нам необходимо немного изменить юнит Systemd из предыдущих шагов по настройке сервера. Открываем в текстовом редакторе файл /etc/systemd/system/vncserver@.service:
sudo nano /etc/systemd/system/vncserver@.service
И из строки
ExecStart=/usr/bin/vncserver :%i -localhost no -alwaysshared -fg
Удаляем «-localhost no»:
ExecStart=/usr/bin/vncserver :%i -alwaysshared -fg
Сохраняем файл, и перезапускаем сервис. Но после сохранения файла и перед перезапуском сервиса сначала выполним команду:
sudo systemctl daemon-reload
Подключаемся к VNC из Ubuntu
Для подключения через SSH туннель нам необходимо будет настроить проброс порта на локальном ПК, сделать это можно командой:
ssh -L 5901:127.0.0.1:5901 -N -f -l УДАЛЕННЫЙ_ПОЛЬЗОВАТЕЛЬ IP_АДРЕС
В примере данной инструкции для меня эта команда будет выглядеть так:
ssh -L 5901:127.0.0.1:5901 -N -f -l mike 192.168.0.104
Теперь устанавливаем vncviewer командой:
sudo apt install xtightvncviewer
И пробуем подключиться:
vncviewer localhost:1
Из Windows такое подключение можно осуществить с помощью специального программного обеспечения такого, как PuTTY.