Virtual Network Computing (VNC) — это система совместного использования экрана, используемая для удаленного доступа к графическим интерфейсам пользователя. Она использует протокол удаленного буфера кадров, позволяющий одному серверу (со стороны пользователя) подключаться к другой стороне (клиенту). VNC безопасна, надежна и работает на всех операционных системах.
RealVNC, UltraVNC, Xfce, TightVNC, и это лишь некоторые из них, являются наиболее популярными VNC-клиентами, используемыми сегодня. Из списка доступных альтернатив вы можете свободно выбрать любой VNC по вашему усмотрению. В этом руководстве мы проведем вас по шагам установки и настройки VNC на Ubuntu 20.04. Мы собираемся установить Xfce из-за его скорости, легковесности и отличной производительности.
Мы начнем с настройки VNC-сервера на Ubuntu сервере и установления безопасного соединения через SSH-туннель. Наконец, мы будем использовать программу VNC-клиента на нашей локальной машине для взаимодействия с сервером через графическую среду рабочего стола.
Предварительные требования
Для выполнения этого руководства вам понадобятся:
-
Сервер Ubuntu 20.04 с пользователем без прав root и простым брандмауэром (UFW).
-
Локальный компьютер с установленным на нем VNC-клиентом. Кроме того, VNC-клиент, который мы будем использовать, подключается через SSH-туннели.
Шаг 1 — Установка среды рабочего стола и VNC-сервера
В отличие от предыдущих версий Ubuntu, Ubuntu 20.04 не поставляется с предустановленным VNC. В качестве первого шага мы установим необходимые пакеты из официального репозитория Ubuntu. Прежде чем двигаться дальше, давайте обновим существующие пакеты:
|
1 |
sudo apt update |
Теперь мы установим Xfce и пакет xfce4-goodies с помощью команды:
|
1 |
sudo apt install xfce4 xfce4-goodies |
Во время установки пакета вы увидите экран с предложением выбрать дисплейный менеджер по умолчанию для Xfce. Проигнорируйте сообщение или установите его по умолчанию, а затем нажмите ENTER.
Дисплейный менеджер — это программа, которая позволяет пользователям входить в среду рабочего стола через графический интерфейс. В этом руководстве мы будем использовать Xfce при подключении с помощью VNC-клиента, где мы вошли в систему как пользователь Ubuntu без прав root. Таким образом, выбор дисплейного менеджера не окажет никакого влияния на нашу установку.
После установки Xfce мы установим сервер TightVNC:
|
1 |
sudo apt install tightvncserver |
На следующем шаге используйте команду vncserver, чтобы настроить пароль доступа к VNC и создать исходные конфигурационные файлы. Введите следующее, чтобы запустить экземпляр VNC-сервера:
|
1 |
vncserver |
После этого установите пароль длиной от 6 до 8 символов и нажмите ENTER. Вы увидите сообщение с запросом:
|
1 2 3 4 5 |
Вывод Вам понадобится пароль для доступа к вашим рабочим столам. Пароль: Подтверждение: |
В будущем, если вы захотите изменить свой пароль или добавить пароль только для просмотра, используйте команду:
|
1 |
vncpasswd |
К этому моменту у вас будут созданы все конфигурации по умолчанию для сервера, и порт дисплея 5901 запущен как :1. VNC может запускать несколько экземпляров на других портах дисплея, таких как :2, :3, и :4, указывая на порт 5902, 5903, и 5904 соответственно:
|
1 2 3 4 5 6 7 8 9 |
Вывод Хотите ли вы ввести пароль только для -просмотраpassword (y/n)? n xauth: файл /home/cloudsigma/.Xauthority does не существует Новый 'X' рабочий стол — your_hostname:1 Создание сценария запуска по умолчаниюscript /home/cloudsigma/.vnc/xstartup Запуск приложений указанных в /home/cloudsigma/.vnc/xstartup Файл журнала находится в /home/cloudsigma/.vnc/your_hostname:1.log |
Ваш VNC-сервер успешно установлен и запущен. На следующем шаге мы настроим сервер для запуска Xfce, чтобы получить доступ через графический интерфейс.
Шаг 2 — Настройка VNC-сервера
В домашнем каталоге вы найдете .vnc папку, которая содержит все файлы конфигурации, называемую startup. Изначально вы обнаружите запущенный файл автозапуска, который был автоматически создан при выполнении команды vncserver на Шаге-1. Скрипт автозапуска был создан при выполнении команды vncserver на предыдущем шаге. Однако теперь вы создадите свой собственный для запуска рабочего стола Xfce. Нам также придется создать собственный сервер для запуска рабочего стола Xfce, так как конфигурация VNC изменится.
Прежде чем продолжить, нам нужно остановить экземпляр VNC-сервера, работающий на порту 5901:
|
1 |
vncserver -kill :1 |
Вы увидите следующий вывод:
|
1 2 |
Вывод Уничтожение Xtightvnc процесса ID 17648 nano ~/.vnc/xstartup |
Вместо 17648, вы можете получить другое число, и это нормально. Далее мы изменим xstartup файл. Перед внесением каких-либо изменений в файл давайте сделаем резервную копию исходного файла:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
Затем создайте новый xstartup файл и откройте его в любом текстовом редакторе. В этом руководстве мы используем nano:
|
1 |
nano ~/.vnc/xstartup |
После этого добавьте в файл следующие строки:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
При каждом запуске или перезапуске VNC-сервера эти команды выполняются автоматически. Первая строка — это Shebang , который сообщает системе информацию об интерпретаторе для передачи ~/.vnc/xstartup файла для выполнения. Следующая строка xrdb $HOME/. Xresources, сообщает графической оболочке VNC о необходимости прочитать файл пользователя сервера Xresources . Наконец, последняя строка просит сервер запустить Xfce. После добавления этих строк сохраните и закройте файл.
Нам нужно сделать файл исполняемым, чтобы VNC-сервер мог использовать новый файл автозапуска:
|
1 |
chmod +x ~/.vnc/xstartup |
Затем перезапустите VNC-сервер:
|
1 |
vncserver -localhost |
Теперь у вас будет добавлена опция -localhost здесь. Параметр localhost привязывает VNC-сервер к локальному интерфейсу вашего сервера (loopback), разрешая подключения только с установленных серверов. Далее мы установим SSH-туннель между нашей локальной машиной и сервером. Цель состоит в том, чтобы добавить дополнительный уровень безопасности для VNC. Почему? Потому что доступ получат только те пользователи, у которых уже есть SSH-доступ к серверу.
Вы увидите следующий вывод:
|
1 2 3 4 |
Новый 'X' рабочий стол — your_hostname:1 Запуск приложений указанных в /home/sammy/.vnc/xstartup Файл журнала находится в /home/cloudsigma/.vnc/your_hostname:1.log |
После завершения настройки мы готовы подключиться к VNC-серверу с нашей локальной машины.
Шаг 3 — Безопасное подключение к рабочему столу VNC
При подключении к серверу VNC не использует безопасные протоколы. Поэтому нам необходимо установить SSH-туннель и настроить VNC-клиент на подключение через этот туннель вместо прямого подключения.
Мы создадим SSH-соединение на нашем локальном компьютере с помощью команды ssh , которая перенаправляет на соединение localhost . Используйте команду в терминале для создания SSH-соединения:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Давайте расшифруем приведенный выше код:
-
-L 59000:localhost:5901: Параметр -L указывает, что данный порт на локальном компьютере ( 59000) будет перенаправлен на указанный хост и порт на целевом сервере ( localhost:5901). Это означает, что порт 5901 на целевом сервере будет определен как your_server_ip). Указываемый вами локальный порт является произвольным. Если этот порт еще не привязан к другой службе, вы можете свободно использовать его в качестве порта перенаправления для вашего туннеля.
-
-C: Включает сжатие, что дополнительно помогает минимизировать потребление ресурсов и ускорить производительность.
-
-N: Полезно для перенаправления портов. Это сообщает ssh не выполнять никаких удаленных команд.
-
-l cloudsigma your_server_ip: Параметр -l позволяет указать пользователя, под которым вы хотите войти в систему после подключения к серверу.
Вышеупомянутая команда — это более безопасный способ установления защищенного соединения, чем простое открытие брандмауэра вашего сервера для разрешения подключений к порту 5901 откуда угодно. Как только вы установите соединение, SSH-туннель будет перенаправлять содержимое с порта 5901 вашего VNC на порт 59000 на вашей локальной машине через стандартный порт SSH; порт 22.
Вы также можете использовать PuTTY для подключения к вашему серверу. Откройте PuTTY, перейдите в левую часть терминала PuTTY и найдите ветку Connection для подключения. Затем разверните ветку SSH и нажмите на Tunnels. На экране Options controlling SSH port forwarding screen, введите 59000 в качестве Source Port и localhost:5901 в качестве Destination:

Оставьте все параметры без изменений, нажмите Add, а затем Apply, чтобы активировать туннель. Как только туннель запустится, используйте VNC-клиент для подключения к localhost: 59000. По умолчанию вам будет предложено пройти аутентификацию с использованием пароля, который мы создали на Шаге 1. После подключения вы увидите рабочий стол Xfce по умолчанию:

Вы можете получать доступ к файлам в домашнем каталоге и управлять ими. Также настройте ваш VNC-сервер для работы в качестве службы systemd.
Шаг 4 — Запуск VNC в качестве службы Systemd
Настройка запуска VNC-сервера в качестве службы systemd упрощает управление сервером. Вы можете запускать, останавливать, перезапускать или завершать его работу по своему усмотрению и необходимости. Каждый раз при загрузке сервера вы можете использовать команды управления systemd, чтобы проверить, находится ли сервер в состоянии ВКЛ или ВЫКЛ.
Сначала мы создадим новый юнит-файл, чтобы указать порт дисплея VNC, который мы хотим использовать при управлении службами. Определите юнит-файл:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
Вы найдете символ @ в конце имени файла, который позволяет передавать аргумент для использования конфигурации службы.
Затем добавьте набор строк в юнит-файл. Переименуйте User, Group, WorkingDirectory, и имя пользователя в значении PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Запуск TightVNC сервера при загрузке After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
Если VNC уже запущен, команда ExecStartPre остановит его. Команда ExecStart запускает VNC и устанавливает глубину цвета 24-бит с разрешением 1280×800. Вы можете изменить эти параметры запуска в соответствии со своими требованиями. Также обратите внимание, что команда ExecStart снова включает параметр -localhost. После завершения сохраните и закройте юнит-файл.
Затем зарегистрируйте новый юнит-файл в системе:
|
1 |
sudo sudo systemctl daemon-reload |
Активируйте автозапуск для юнит-файла:
|
1 |
sudo systemctl enable vncserver@1.service |
Цифра 1 после @ знак указывает, какой номер дисплея должна обслуживать служба. В нашем случае это значение по умолчанию :1 как обсуждалось в Шаге-2. Если VNC все еще запущен, вы можете остановить текущий экземпляр VNC-сервера с помощью команды kill :
|
1 |
vncserver -kill :1 |
Затем запустите его так же, как и любую другую службу systemd:
|
1 |
sudo systemctl start vncserver@1 |
Вы можете убедиться, что он запустился, с помощью этой команды:
|
1 |
sudo systemctl status vncserver@1 |
Вы увидите следующий вывод:
|
1 2 3 4 5 6 7 8 |
Вывод vncserver@1.service - Запуск TightVNC сервер при запуске Загружен: загружен (/etc/systemd/system/vncserver@.service; включен; vendor preset: включен) Активен: активен (работает) с Чт 2020-05-07 17:23:50 UTC; 6с назад Процесс: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Процесс: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Главный PID: 39795 (Xtightvnc) ... |
Теперь ваш VNC-сервер готов к использованию при каждой загрузке сервера, и вы можете управлять им с помощью systemctl команд, как и любой другой службой systemd. Однако на стороне клиента вы не заметите никакой разницы. Чтобы восстановить подключение, запустите ваш SSH туннель с помощью:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Вы снова можете подключаться с помощью VNC-клиента к localhost:59000 на вашем сервере.
Заключение
На первый взгляд настройка VNC-сервера может показаться сложной задачей, особенно когда вы пытаетесь подключиться к новому компьютеру. Но как только вы установите надежное соединение, работа с удаленным компьютером станет простой и увлекательной. Благодаря защищенному VNC-серверу, работающему на вашем сервере Ubuntu 20.04, вы сможете легко управлять своими ресурсами, файлами, программным обеспечением и настройками с помощью удобного графического интерфейса. Пожалуй, единственным недостатком использования VNC является высокий расход пропускной способности сети. Вы можете обойти это ограничение, используя низкое разрешение экрана и оттенки серого для более быстрой передачи данных.
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.