Введение

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 обновите список пакетов:

  • sudo apt update

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

  • sudo apt install xfce4 xfce4-goodies

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

  • sudo apt install tightvncserver

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

  • 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:

  • nano ~/.vnc/xstartup

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

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

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

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

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

  • chmod +x ~/.vnc/xstartup

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

  • 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:

  • 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:

  • 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

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

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

  • sudo systemctl daemon-reload

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

  • sudo systemctl enable vncserver@1.service

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

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

  • vncserver -kill :1

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

  • sudo systemctl start vncserver@1

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

  • sudo systemctl status vncserver@1

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

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

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

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

Заключение

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

0 Comments

Creative Commons License