Как установить и настроить VNC на Ubuntu 18.04

Вступление

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

В этом руководстве вы настроите сервер VNC на сервере Ubuntu 18.04 и безопасно подключитесь к нему через туннель SSH. Вы будете использоватьTightVNC, быстрый и легкий пакет дистанционного управления. Этот выбор гарантирует, что наше соединение VNC будет гладким и стабильным даже на медленных интернет-соединениях.

Предпосылки

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

  • Один сервер Ubuntu 18.04, настроенный следующим образомthe Ubuntu 18.04 initial server setup guide, включая пользователя sudo без полномочий root и брандмауэр.

  • Локальный компьютер с установленным клиентом VNC, который поддерживает соединения VNC через туннели SSH.

    • В Winows вы можете использоватьTightVNC,RealVNC илиUltraVNC.

    • В macOS вы можете использовать встроенную программуScreen Sharing или кроссплатформенное приложение, напримерRealVNC.

    • В Linux вы можете выбрать один из множества вариантов, включаяvinagre,krdc,RealVNC илиTightVNC.

[[step-1 -—- install-the-desktop-environment-and-vnc-server]] == Шаг 1. Установка среды рабочего стола и сервера VNC

По умолчанию сервер Ubuntu 18.04 не имеет графической среды рабочего стола или установленного сервера VNC, поэтому мы начнем с его установки. В частности, мы установим пакеты для последней версии среды рабочего столаXfce и пакета TightVNC, доступного в официальном репозитории Ubuntu.

На вашем сервере обновите список пакетов:

sudo apt update

Теперь установите среду рабочего стола Xfce на свой сервер:

sudo apt install xfce4 xfce4-goodies

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

sudo apt install tightvncserver

Чтобы завершить первоначальную настройку VNC-сервера после установки, используйте командуvncserver для установки безопасного пароля и создания файлов начальной конфигурации:

vncserver

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

OutputYou will require a password to access your desktops.

Password:
Verify:

Пароль должен быть длиной от шести до восьми символов. Пароли длиной более 8 символов будут усечены автоматически.

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

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

OutputWould you like to enter a view-only password (y/n)? n
xauth:  file /home/sammy/.Xauthority does not exist

New 'X' desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

Теперь давайте настроим сервер VNC.

[[step-2 -—- configuring-the-vnc-server]] == Шаг 2 - Настройка VNC-сервера

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

Эти команды находятся в файле конфигурации с именемxstartup в папке.vnc в вашем домашнем каталоге. Сценарий запуска был создан, когда вы запускалиvncserver на предыдущем шаге, но мы создадим свой собственный для запуска рабочего стола Xfce.

При первой настройке VNC запускает экземпляр сервера по умолчанию на порту5901. Этот порт называетсяdisplay port и обозначается VNC как:1. VNC может запускать несколько экземпляров на других портах отображения, например:2,:3 и т. Д.

Поскольку мы собираемся изменить настройку сервера VNC, сначала остановите экземпляр сервера VNC, работающий на порту5901, с помощью следующей команды:

vncserver -kill :1

Вывод должен выглядеть следующим образом, хотя вы увидите другой PID:

OutputKilling Xtightvnc process ID 17648

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

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

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

nano ~/.vnc/xstartup

Команды в этом файле выполняются автоматически при каждом запуске или перезапуске сервера VNC. Нам нужен VNC, чтобы запустить среду рабочего стола, если она еще не запущена. Добавьте эти команды в файл:

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

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

Чтобы VNC-сервер мог правильно использовать этот новый загрузочный файл, нам нужно сделать его исполняемым.

sudo chmod +x ~/.vnc/xstartup

Теперь перезапустите сервер VNC.

vncserver

Вы увидите вывод, похожий на этот:

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

Установив конфигурацию, давайте подключимся к серверу с нашего локального компьютера.

[[step-3 -—- connected-the-vnc-desktop-securely]] == Шаг 3. Безопасное подключение рабочего стола VNC

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

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

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

Переключатель-L определяет привязку порта. В этом случае мы привязываем порт5901 удаленного подключения к порту5901 на вашем локальном компьютере. Переключатель-C включает сжатие, а переключатель-N сообщаетssh, что мы не хотим выполнять удаленную команду. Ключ-l указывает имя удаленного входа в систему.

Не забудьте заменитьsammy иyour_server_ip на имя пользователя sudo без полномочий root и IP-адрес вашего сервера.

Если вы используете графический клиент SSH, например PuTTY, используйтеyour_server_ip в качестве IP-адреса подключения и установитеlocalhost:5901 в качестве нового перенаправленного порта в настройках туннеля SSH программы.

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

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

VNC connection to Ubuntu 18.04 server

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

Files via VNC connection to Ubuntu 18.04

НажмитеCTRL+C в своем терминале, чтобы остановить туннель SSH и вернуться к приглашению. Это также отключит вашу сессию VNC.

Теперь давайте настроим наш VNC-сервер как сервис.

[[step-4 -—- running-vnc-as-a-system-service]] == Шаг 4. Запуск VNC как системной службы

Затем мы настроим VNC-сервер в качестве службы systemd, чтобы мы могли запускать, останавливать и перезапускать его по мере необходимости, как и любую другую службу. Это также обеспечит запуск VNC при перезагрузке сервера.

Сначала создайте новый файл модуля с именем/etc/systemd/system/[email protected] с помощью вашего любимого текстового редактора:

sudo nano /etc/systemd/system/[email protected]

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

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

/etc/systemd/system/[email protected] [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 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

КомандаExecStartPre останавливает VNC, если он уже запущен. КомандаExecStart запускает VNC и устанавливает глубину цвета на 24-битный цвет с разрешением 1280x800. Вы также можете изменить эти параметры запуска в соответствии с вашими потребностями.

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

Затем сообщите системе о новом файле модуля.

sudo systemctl daemon-reload

Включить файл модуля.

sudo systemctl enable [email protected]

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

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

vncserver -kill :1

Затем запустите его так же, как любой другой сервис systemd.

sudo systemctl start vncserver@1

Вы можете проверить, что это началось с этой командой:

sudo systemctl status vncserver@1

Если все началось правильно, вывод должен выглядеть так:

Output● [email protected] - Start TightVNC server at startup
   Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago
  Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
  Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
 Main PID: 22330 (Xtightvnc)

...

Ваш VNC-сервер теперь будет доступен после перезагрузки компьютера.

Запустите ваш SSH-туннель снова:

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

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

Заключение

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

Related