Настройка vnc server ubuntu


Как установить VNC на Linux Ubuntu и CentOS 🔁

Содержание:

  • Подготовка
  • Настройка VNC-сервера
  • Обеспечение безопасности VNC
  • Подключение к сессии VNC

Virtual Network Computing (VNC) – система управления удалённым рабочим столом, использующая протокол RFB (Remote FrameBuffer, англ. «удалённый кадровый буфер»). Соединение осуществляется между двумя устройствами: клиентом (управляющее) и сервером (подчиняющееся).

Взаимодействие между системами происходит путём передачи откликов с периферии клиента (мышь, клавиатура и т. д.) и ретрансляции изображения с удалённого компьютера. Для создания сессии, на каждой из сторон должно быть установлено соответствующее ПО: VNC-клиент (VNC Viewer) и VNC-сервер (VNC Server).

Подробнее узнать, что из себя представляет технология управления удалённым рабочим столом можно здесь.

Далее будет рассказано о том, как установить VNC на Linux и обезопасить подключение. Инструкция подойдёт для двух популярных дистрибутивов: Ubuntu (18.04 и 20.04) и CentOS 7. В качестве VNC-сервера будет использоваться TightVNCServer.

Подготовка

Обновление компонентов

Перед началом выполнения каких-либо действий нужно обновить компоненты системы. Для CentOS также будет установлены дополнительные пакеты: EPEL репозиторий и текстовой редактор Nano.

Ubuntu
sudo apt update -y && sudo apt upgrade -y
CentOS
sudo yum update -y && sudo yum upgrade -y && sudo yum install epel-release nano

Установка окружения

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

Ubuntu
sudo apt install xfce4 xfce4-goodies
CentOS
sudo yum groupinstall xfce

Установка TightVNCServer

Инсталлировать пакет TightVNCServer вместе с зависимостями можно командой:

Ubuntu

sudo apt install tightvncserver -y

CentOS

sudo yum install tigervnc-server -y

Настройка фаервола CentOS

На серверах под управлением CentOS брандмауэр по умолчанию блокирует доступ к сети сторонним программам. Чтобы дать разрешение TightVNCServer открывать сетевые порты, понадобится ввести команду:

sudo firewall-cmd --permanent --zone=public --add-service vnc-server

Теперь нужно применить изменения:

sudo firewall-cmd --reload

Настройка VNC-сервера

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

Запустить VNC-сервер можно следующей командой:

vncserver

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

Сменить пароль можно в любой момент командой «vncpasswd».

А также пользователю будет задан вопрос: «Would you like to enter a view-only password (y/n)?» («Вы хотите ввести пароль только для просмотра (да/нет)?») Функция позволяет подключиться к сессии для демонстрации. То есть пользователь будет видеть всё, что происходит на экране, но не сможет управлять удалённым компьютером. Если применять возможность не планируется, то стоит выбрать ответ «n» («нет»).

Ещё важная строка, на которую нужно обратить внимание: «New ‘X’ desktop is test:1» (Ubuntu) или «New ‘test.program.ru:1 (username)’» (CentOS). В предложении говориться о создании новой сессии с порядковым номером «1». Таких «дисплеев» можно запустить несколько и все они будут привязаны к определённым сетевым портам. Например, сессия «1» будет «висеть» по умолчанию на 5901 порте, сессия с номером «2» на 5902 и так далее по порядку.

Подготовка VNC для работы с окружением XFCE

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

 Не стоит забывать, что все действия требуется выполнять с одной и той же учётной записи Linux.

Для начала нужно остановить работающий дисплей. Чуть раньше говорилось, что ему присвоен порядковый номер «1», поэтому команда составляется следующим образом:

vncserver -kill :1

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

rm -f ~/.vnc/xstartup

И создать вместо него новый:

nano ~/.vnc/xstartup

Откроется пустой документ, в который необходимо добавить следующий код:

Ubuntu

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

CentOS

#!/bin/sh
 unset SESSION_MANAGER
 unset DBUS_SESSION_BUS_ADDRESS
 exec startxfce4

Для сохранения нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить внесений изменений нажатием «Enter».

Остаётся сделать созданный файл исполняемым:

chmod +x ~/.vnc/xstartup

Настройка автозапуска

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

Для начала нужно создать скрипт, при выполнении которого будет запускаться TightVNCServer с определённым набором параметров:

sudo nano /usr/local/bin/myvnc

Теперь в открывшийся пустой файл нужно занести следующий код:

#!/bin/bash
 PATH="$PATH:/usr/bin/"
 DISPLAY="1"
 DEPTH="16"
 GEOMETRY="1024x768"
 OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
 
 case "$1" in
 start)
 /usr/bin/vncserver ${OPTIONS}
 ;;
 
 stop)
 /usr/bin/vncserver -kill :${DISPLAY}
 ;;
 
 restart)
 $0 stop
 $0 start
 ;;
 esac
 exit 0

Переменные, на которые стоит обратить внимание:

  • «DISPLAY» – номер запускаемой сессии;
  • «DEPTH» – глубина цвета;
  • «GEOMETRY» – разрешение экрана.

Остаётся сделать файл исполняемым, чтобы скрипт стал доступен для запуска:

sudo chmod +x /usr/local/bin/myvnc

Теперь можно использовать следующие простые команды, чтобы управлять VNC-сервером:

myvnc start ###запустить vnc
 myvnc stop ###остановить vnc
 myvnc restart ###перезапустить vnc

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

sudo nano /lib/systemd/system/myvnc.service

В создаваемый файл вносится следующий код:

[Unit]
 Description=MyVnc
 
 [Service]
 Type=forking
 ExecStart=/usr/local/bin/myvnc start
 ExecStop=/usr/local/bin/myvnc stop
 ExecReload=/usr/local/bin/myvnc restart
 User=username
 
 [Install]
 WantedBy=multi-user. target

В переменную «User» вводится логин пользователя Linux, от имени которого будет запускаться VNC-сервер.

Теперь нужно сохранить файл и добавить созданную службу в автозагрузку:

sudo systemctl enable myvnc.service

Для применения настроек остаётся перезапустить демон systemd и VNC-сервер следующими командами:

sudo systemctl daemon-reload
 myvnc restart

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

Обеспечение безопасности VNC

Использовать VNC в «голом» виде не рекомендуется по нескольким причинам:

  • Отсутствие шифровки трафика.
  • На сервере открыты порты, которые может атаковать злоумышленник.
  • Пароль ограничен 8 символами.

Всё это делает использование VNC небезопасным. Но есть решение проблемы: туннелирование трафика через протокол SSH, который надёжнее реализован и поддерживает шифровку проходящих данных.

Настройка туннелирования трафика через SSH

Для начала нужно запретить доступ к VNC-серверу извне, чтобы исключить возможность атаки по открытому порту (5901, 5902 и т. д.). Для этого необходимо отредактировать скрипт, созданный на ранних этапах настройки TightVNCServer:

sudo nano /usr/local/bin/myvnc

В файле заменяются строки:

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
 
 на
 
 OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"

«-localhost» – разрешает подключаться к порту только с самого сервера.

После сохранения скрипта необходимо перезагрузить VNC для применения изменений:

myvnc restart

Подключение

Unix

Выполнить подключение с туннелированием трафика на Unix-системах можно с помощью встроенной консольной утилиты. Команда составляется следующим образом:

ssh [email protected] -L 5901:localhost:5901

Значения, которые нужно изменить на собственные:

  • «user» – имя пользователя;
  • «xxx.xxx.xxx.xxx» – IP-адрес сервера.

Утилита запросит пароль для входа в учётную запись. Внешне подключение будет ничем не отличаться от обычного соединения с сервером через SSH. Туннелирование будет работать до тех пор, пока сессия не будет закрыта.

Windows

Установка соединения на Windows будет рассмотрена на примере распространённого клиента Putty.

Алгоритм подключения
  1. Открыть программу и перейти по пути: «Соединение» -> «SHH» -> «Туннели».
  2. В поле «Исходный порт» нужно ввести значение «5901», а в «Назначение» подставить «localhost:5901». Для применения параметров необходимо нажать «Добавить».Можно создать несколько таких профилей, изменив «5901» на значения других портов («5902», «5903» и т. д.), если планируется подключить сразу несколько сессий.
  3. Теперь можно вернуться в исходный раздел «Сеанс», ввести данные для подключения к серверу через SSH и нажать «Соединиться».

Чтобы заново не проходить операцию настройки каждый раз, можно сохранить параметры в профиль. Для этого нужно ввести произвольное имя в поле «Управление сеансами» и нажать «Сохранить».

  1. В открывшемся окне нужно ввести данные для подключения к серверу. Туннелирование начинает работать с этого момента и проходит незаметно для пользователя. Для поддержания соединения достаточно не прерывать сессию SSH.

Подключение к сессии VNC

Подключиться по VNC к Linux можно с помощью клиента TightVNC Viewer, который доступен для загрузки на официальном сайте. Для остальных программ алгоритм установки соединения будет аналогичен.

Сначала нужно открыть TightVNC Viewer и в поле «Remote Host» ввести внешний IP-адрес сервера и порт, разделяя их двоеточием («:»). Если подключение осуществляется с туннелированием трафика, то вместо IP-адреса подставляется стандартное значение локального хоста (например, «localhost» или «127.0.0.1»). Для установки соединения нужно нажать «Connect».

Откроется окно, в котором программа запросит пароль. Для подтверждения остаётся нажать «ОК».

В итоге появится изображение рабочего стола с удалённого сервера.

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

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

Мы установим на сервер рабочий стол Linux XFCE, затем установим и настроим VNC-сервер с помощью TightVNC.

Содержание

  1. Шаг 1 - Обновление системы и создание пользователя
  2. Шаг 2 - Установите XFCE Desktop и TightVNC
  3. Шаг 3 - Начальная конфигурация VNC
  4. Шаг 4 - Настройка TightVNC
  5. Шаг 5 - Запуск TightVNC в качестве службы
  6. Шаг 6 - Подключение к серверу VNC через туннель SSH

Шаг 1 - Обновление системы и создание пользователя

Обновите репозиторий Ubuntu, затем обновите систему с помощью команд apt, приведенных ниже.

sudo apt update
 sudo apt upgrade

После обновления, при необходимости, перегрузите компьютер.

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

Создайте нового пользователя под именем 'vncuser' и задайте ему пароль.

useradd -m -s /bin/bash vncuser
 passwd vncuser

Теперь добавьте пользователя 'vncuser' в группу sudo для доступа с привилегиями root.

usermod -a -G sudo vncuser

Был создан новый пользователь 'vncuser' для доступа к VNC, и он сможет получить доступ к привилегиям root.

su - vncuser
 sudo su

Шаг 2 - Установите XFCE Desktop и TightVNC

Linux имеет несколько окружений рабочего стола, таких как Gnome, Unity, KDE, LXDE, XFCE и т.д. В этом руководстве мы будем использовать рабочий стол XFCE в качестве среды рабочего стола VNC.

Установите рабочий стол XFCE, включая все зависимости, с помощью команды apt, приведенной ниже.

sudo apt install xfce4 xfce4-goodies

Если установка рабочего стола XFCE завершена, установите пакеты 'tightvncserver'.

Выполните команду apt, приведенную ниже.

sudo apt install -y tightvncserver

Шаг 3 - Начальная конфигурация VNC

В этом шаге мы создадим конфигурацию VNC для пользователя 'edward'.

Войдите под именем 'vncuser'

su - vncuser

Теперь запустите конфигурацию VNC для пользователя 'vncuser' командой ниже.

vncserver

Вам будет предложено ввести пароль VNC-сервера - введите его. А пароль 'только для просмотра' вы можете включить или отключить. Пользователь, который войдет на сервер, используя пароль "только для просмотра", не сможет управлять мышью и клавиатурой.

При первом запуске команды 'vncserver' автоматически создается новый каталог конфигурации '.vnc' и запускается первая сессия VNC.

Проверьте это с помощью команды ниже.

ls -lah ~/.vnc/
 ps -ef | grep Xtightvnc

Вы получите результат, как показано ниже.

Шаг 4 - Настройка TightVNC

В этом шаге мы настроим VNC-сервер для использования рабочего стола XFCE. Мы отредактируем файл конфигурации VNC 'xstartup' в каталоге '.vnc'.

Прежде чем редактировать конфигурацию, убейте первый сеанс VNC с помощью следующей команды.

vncserver -kill :1

Теперь сделайте резервную копию конфигурации по умолчанию и создайте новую с помощью vim.

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

Вставьте туда следующую конфигурацию.

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

Сохраните и выйдите.

Теперь сделайте скрипт исполняемым с помощью chmod и снова запустите команду 'vncserver'.

chmod +x ~/.vnc/xstartup
 vncserver

Проверьте список сессий.

ps -ef | grep Xtightvnc

И вы получите результат, как показано ниже.

Шаг 5 - Запуск TightVNC в качестве службы

В этом руководстве мы будем запускать VNC-сервер как службу. Поэтому нам нужно создать для него новый служебный файл.

Перейдите в каталог '/etc/systemd/system' и создайте новый служебный файл '[email protected]'.

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

Вставьте туда следующий скрипт службы vnc.

[Unit]
 Description=Remote desktop service (VNC)
 After=syslog.target network.target
 
 [Service]
 Type=forking
 User=vncuser
 PIDFile=/home/vncuser/. 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

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

Теперь перезагрузите службы systemd и запустите службу VNC-сервера.

systemctl daemon-reload
 systemctl start [email protected]

если при запуске сервиса получаем ошибку, создаем PID файл вручную

к примеру

> /home/vncuser/.vnc/virtual-machine:1.pid
 

Если все прошло без ошибок, добавьте службу во время загрузки и проверьте ее состояние с помощью systemctl.

systemctl enable [email protected]
 systemctl status [email protected]

Ниже приведены результаты в нашем случае:

Сервер VNC установлен, и первая сессия теперь запущена под пользователем 'vncuser'.

Шаг 6 - Подключение к серверу VNC через туннель SSH

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

Теперь откройте приложение 'vnc viewer', создайте новое соединение и введите адрес VNC сервера с IP локального хоста IP адрес сервера и порт 5901, как показано ниже.

Подключитесь к VNC-серверу, и вам будет предложено ввести пароль VNC-сервера. Введите пароль и нажмите 'OK'.

Теперь вы получите рабочий стол XFCE с вашего сервера.

Как установить VNC-сервер на Ubuntu и удаленно управлять Linux-машиной

Главная » Блоги » Как установить VNC-сервер на Ubuntu и удаленно управлять Linux-машиной

Ubuntu — один из самых популярных дистрибутивов Linux. Вот почему VNC Server для Ubuntu может пригодиться, когда вы хотите удаленно получить доступ к машине, на которой работает этот дистрибутив. Более того, VNC Connect позволяет вам делать это безопасно.