Tutorial

Установка и настройка VNC в Ubuntu 20.04 [Краткое руководство]

Published on June 11, 2020

Manager, Developer Education

Русский
Установка и настройка VNC в Ubuntu 20.04 [Краткое руководство]

Введение

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

В этом кратком руководстве вы установите сервер VNC с TightVNC на сервере Ubuntu 20.04 и безопасно подключитесь к нему через туннель SSH. Затем вы будете использовать клиентскую программу VNC на вашем локальном компьютере для взаимодействия с вашим сервером через графическую среду рабочего стола.

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

Для завершения данного обучающего модуля вам потребуется:

  • Один сервер Ubuntu 20.04, non-root user с правами администратора и брандмауэр, настроенный с помощью UFW. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера Ubuntu 20.04.
  • Локальный компьютер с установленным клиентом VNC. Клиент VNC, который вы используете, должен поддерживать подключение через туннели SSH:
    • В Windows вы можете использовать TightVNC, RealVNC или UltraVNC.
    • В macOS вы можете использовать встроенную программу Screen Sharing или кросс-платформенное приложение, например RealVNC.
    • В Linux вы можете использовать разные решения, в том числе vinagre, krdc, RealVNC или TightVNC.

Шаг 1 — Установка среды рабочего стола и сервера VNC

После подключения к вашему серверу с помощью SSH обновите список пакетов:

  1. sudo apt update

Затем установите Xfce вместе с пакетом xfce4-goodies, который содержит несколько дополнительных возможностей для среды рабочего стола:

  1. sudo apt install xfce4 xfce4-goodies

После завершения установки установите сервер TightVNC:

  1. sudo apt install tightvncserver

Затем запустите команду vncpasswd для установки пароля доступа к VNC и создайте первоначальные файлы конфигурации:

  1. vncpasswd

Вам будет предложено ввести и подтвердить пароль для удаленного доступа к системе:

Output
You will require a password to access your desktops. Password: Verify:

Пароль должен содержать от 6 до 8 символов. Пароли длиннее 8 символов будут автоматически обрезаны. После проверки пароля у вас будет возможность создать пароль только для просмотра, но это не является обязательным.

Если вы захотите сменить пароль или добавить пароль для просмотра, перезапустите команду vncpasswd.

Шаг 2 — Настройка сервера VNC

Команды, запускаемые сервером VNC при старте, находятся в файле конфигурации с именем xstartup в папке .vnc вашего домашнего каталога. На этом шаге мы создадим пользовательский скрипт xstartup, который будет давать указание серверу VNC подключиться к рабочему столу Xfce.

Создайте новый файл xstartup и откройте его в текстовом редакторе, например nano:

  1. nano ~/.vnc/xstartup

Добавьте в новый файл следующие строки:

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Первая после шебанга команда в файле xrdb $HOME/.​​Xresources указывает системе графического интерфейса VNC прочитать файл пользователя сервера .Xresources​​​. Вторая команда указывает серверу запустить Xfce.

После добавления этих строк сохраните и закройте файл. Если вы используете nano, нажмите CTRL+X, Y, затем ENTER.

Затем сделайте файл исполняемым:

  1. chmod +x ~/.vnc/xstartup

И запустите сервер VNC с помощью команды vncserver:

  1. vncserver -localhost

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

Вывод будет выглядеть следующим образом:

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Здесь вы можете увидеть, что команда запускает экземпляр сервера по умолчанию на порту 5901. Этот порт называется портом дисплея и учитывается VNC как :1:

Шаг 3 — Безопасная настройка рабочего стола VNC

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

Создайте на локальном компьютере соединение SSH, которое безопасно перенаправляется в соединение localhost для VNC. Для этого можно ввести через терминал в Linux или macOS команду ssh:

  1. ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

Локальным портом может быть любой порт, который еще не блокирован другой программой или процессом, хотя в этом примере мы используем 59000. Также замените sammy на имя пользователя Ubuntu, а your_server_ip должен отражать IP-адрес вашего сервера.

Если вы используете PuTTY для подключения к вашему серверу, вы можете создать туннель SSH, нажав правой клавишей мыши на верхнюю панель окна терминала, а затем выбрав опцию Change Settings…:

Нажатие правой клавишей мыши на верхнюю панель открывает опцию Change Settings

Найдите ветку Connection​​​ в меню слева окна реконфигурации PuTTY. Раскройте ветку SSH и нажмите на Tunnels. На экране Options controlling SSH port forwarding введите 59000​​​ в поле Source Port​​​ и localhost:5901 в поле Destination:

Пример конфигурации SSH-туннеля PuTTY

Затем нажмите кнопку Add, потом кнопку Apply для активации туннеля.

После запуска туннеля используйте клиент VNC для подключения к localhost:59000​​​. Вам будет предложено пройти аутентификацию, используя пароль, заданный на шаге 1.

После подключения вы увидите рабочий стол Xfce по умолчанию. Он должен выглядеть следующим образом:

Подключение VNC к серверу Ubuntu 20.04 со средой рабочего стола Xfce

Для доступа к файлам в каталоге home вы можете использовать менеджер файлов или командную строку, как показано здесь:

Менеджер файлов при подключении VNC к Ubuntu 20.04

Нажмите CTRL+C в локальном терминале, чтобы остановить туннель SSH и вернуться к командной строке. При этом сеанс VNC также будет отключен.

Шаг 4 — Запуск VNC в качестве системной службы

Настроив сервер VNC как службу systemd, вы можете использовать команды управления systemd, такие как запуск, остановка и перезапуск сервера, а также активировать его при загрузке сервера.

Сначала создайте новый файл блока systemd с именем /etc/systemd/system/vncserver@.service:

  1. sudo nano /etc/systemd/system/vncserver@.service

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

Добавьте в файл следующие строки, не забудьте изменить значения User​​​, Group, WorkingDirectory и имя пользователя в PIDFILE на ваше имя пользователя:

/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.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

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

Затем сообщите системе о новом файле блока:

  1. sudo systemctl daemon-reload

Активируйте файл блока:

  1. sudo systemctl enable vncserver@1.service

Цифра 1 после символа @ указывает, на каком дисплее должна появляться служба. В данном случае это значение по умолчанию :1, как говорилось на шаге 2.

Остановите текущий экземпляр сервера VNC, если он еще работает:

  1. vncserver -kill :1

Запустите его, как любую другую службу systemd:

  1. sudo systemctl start vncserver@1

Вы можете проверить запуск с помощью следующей команды:

  1. sudo systemctl status vncserver@1

Дополнительную информацию о systemctl можно найти в нашем обучающем руководстве Использование systemctl в управлении служб и блоков systemd.

Для повторного подключения еще раз запустите туннель SSH:

  1. ssh -L 59000:127.0.0.1:5901 -C -N -l sammy your_server_ip

Затем создайте новое подключение, используя клиентское программное обеспечение VNC для подключения localhost:59000 к вашему серверу.

Заключение

Вы установили и запустили защищенный сервер VNC на своем сервере Ubuntu 20.04. Теперь вы сможете управлять файлами, программным обеспечением и настройками через удобный в использовании графический интерфейс, а также удаленно запускать графические приложения, в том числе браузеры.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.