Tutorial
Установка и настройка 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:
Шаг 1 — Установка среды рабочего стола и сервера VNC
После подключения к вашему серверу с помощью SSH обновите список пакетов:
- sudo apt update
Затем установите Xfce вместе с пакетом xfce4-goodies
, который содержит несколько дополнительных возможностей для среды рабочего стола:
- sudo apt install xfce4 xfce4-goodies
После завершения установки установите сервер TightVNC:
- sudo apt install tightvncserver
Затем запустите команду vncpasswd
для установки пароля доступа к VNC и создайте первоначальные файлы конфигурации:
- vncpasswd
Вам будет предложено ввести и подтвердить пароль для удаленного доступа к системе:
OutputYou 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
Добавьте в новый файл следующие строки:
#!/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 будет разрешать только соединения, исходящие от сервера, на котором он установлен.
Вывод будет выглядеть следующим образом:
OutputNew '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…:
Найдите ветку Connection в меню слева окна реконфигурации PuTTY. Раскройте ветку SSH и нажмите на Tunnels. На экране Options controlling SSH port forwarding введите 59000
в поле Source Port и localhost:5901
в поле Destination:
Затем нажмите кнопку Add, потом кнопку Apply для активации туннеля.
После запуска туннеля используйте клиент VNC для подключения к localhost:59000
. Вам будет предложено пройти аутентификацию, используя пароль, заданный на шаге 1.
После подключения вы увидите рабочий стол Xfce по умолчанию. Он должен выглядеть следующим образом:
Для доступа к файлам в каталоге home вы можете использовать менеджер файлов или командную строку, как показано здесь:
Нажмите 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 на ваше имя пользователя:
[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. Теперь вы сможете управлять файлами, программным обеспечением и настройками через удобный в использовании графический интерфейс, а также удаленно запускать графические приложения, в том числе браузеры.