img

Установка и настройка VNC сервера в CentOS 8

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

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

 Установка и настройка VNC сервера в CentOS 8

Подготовка

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


Установка окружения рабочего стола

Как правило, на серверах не установлена среда рабочего стола. Если машина, к которой вы хотите подключиться, не имеет графического интерфейса, сначала установите ее. В противном случае пропустите этот шаг.

Выполните следующую команду, чтобы установить Gnome, среду рабочего стола по умолчанию в CentOS 8 на удаленной машине:

sudo dnf groupinstall "Server with GUI"

В зависимости от вашей системы загрузка и установка пакетов и зависимостей Gnome может занять некоторое время.


Установка VNC-сервера

В качестве сервера мы будем использовать TigerVNC - активно поддерживаемый высокопроизводительный VNC-сервер с открытым исходным кодом. Он доступен в репозиториях CentOS по умолчанию, для его установки введите:

sudo dnf install tigervnc-server

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

vncserver

Вам будет предложено ввести и подтвердить пароль и указать, следует ли устанавливать его в качестве пароля только для просмотра (view-only). Если вы решите установить пароль только для просмотра, пользователь не сможет взаимодействовать с экземпляром VNC с помощью мыши и клавиатуры.

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/linuxize/.Xauthority does not exist

New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log

При первом запуске команды vncserver она создаст и сохранит файл паролей в каталоге ~/.vnc, который будет создан, если его не будет.

Обратите внимание, что : 1 после имени хоста в выводе выше. Это указывает номер порта дисплея, на котором работает сервер VNC. В нашем случае сервер работает по TCP-порту 5901 (5900 + 1) . Если вы создадите второй экземпляр, он будет работать на следующем свободном порту, то есть : 2, что означает, что сервер работает на порту 5902 (5900 + 2) .

Важно помнить, что при работе с серверами VNC: X - это порт дисплея, который относится к 5900 + X.

Прежде чем перейти к следующему шагу, сначала остановите экземпляр VNC, используя команду vncserver с параметром -kill и номером сервера в качестве аргумента. В нашем случае сервер работает в порту 5901 (: 1), поэтому, чтобы остановить его, запустите:

vncserver -kill :1

Мы получим такой вывод:

Killing Xvnc process ID 19681

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

Теперь, когда и Gnome, и TigerVNC установлены на удаленной машине CentOS, следующим шагом является настройка TigerVNC для использования Gnome. Сервер VNC использует файл ~/.vnc/xstartup для запуска приложений при создании нового рабочего стола. Откройте файл:

vim ~/.vnc/xstartup

И отредактируйте его следующим образом:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

Сохраните и закройте файл (напоминаем, что в vim для этого нужно ввести :wq). Приведенный выше скрипт автоматически выполняется при каждом запуске или перезапуске сервера TigerVNC.

Если вы хотите передать дополнительные параметры серверу VNC, откройте файл ~/.vnc/config и добавьте один параметр в каждой строке. Наиболее распространенные параметры перечислены в файле. Раскомментируйте и измените по своему вкусу. Вот пример:

# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared

Создание файла модуля Systemd

Файлы модулей позволяют легко запускать, останавливать и перезапускать службы. Как правило, лучшим местом для хранения файлов пользовательских модулей является ~/.config/systemd/user. Создайте каталог при помощи команды mkdir:

mkdir -p ~/.config/systemd/user

Скопируйте дефолтный файл модуля vncserver:

cp /usr/lib/systemd/user/vncserver@.service ~/.config/systemd/user/

Сообщите systemd, что существует новый файл пользовательского модуля:

systemctl --user daemon-reload

Запустите службу VNC и включите ее при загрузке:

systemctl --user enable vncserver@:1.service --now

Число 1 после @: определяет порт дисплея, который будет прослушивать служба VNC. Мы используем 1, что означает, что VNC-сервер будет прослушивать порт 5901, как мы обсуждали ранее.

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

loginctl enable-linger

Убедитесь, что служба успешно запущена:

systemctl --user status vncserver@:1.service

Получим такой вывод:

? vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/home/linuxize/.config/systemd/user/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-01-30 22:14:08 UTC; 2s ago
  Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)
  Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
   CGroup: /user.slice/user-1000.slice/user@1000.service/vncserver.slice/vncserver@:1.service
  ...

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

VNC не является зашифрованным протоколом и может подвергаться перехвату пакетов. Рекомендуемый подход заключается в создании туннеля SSH для безопасной пересылки трафика с локального компьютера через порт 5901 на удаленный сервер с тем же портом.

Настройка SSH-туннелирования в Linux и macOS

Если вы используете Linux, macOS или любую другую операционную систему на основе Unix на своем компьютере, вы можете легко создать туннель с помощью следующей команды ssh:

ssh -L 5901:127.0.0.1:5901 -N -f -l username remote_server_ip

Вам будет предложено ввести пароль пользователя. Замените username и remote_server_ip своим именем пользователя и IP-адресом вашего сервера.

Настройка SSH-туннелирования в Windows

Пользователи Windows могут настроить SSH-туннелирование с помощью PuTTY.

Откройте Putty и введите IP-адрес вашего сервера в поле Host name or IP address.

 Host name or IP address

В меню «Connection» разверните пункт «SSH» и выберите «Tunnels» . Введите порт VNC-сервера 5901 в поле Source Port, введите адрес_сервера: 5901 в поле Destination и нажмите кнопку Add.

 Tunnels

Вернитесь на страницу ”Session”, чтобы сохранить настройки, чтобы вам не приходилось каждый раз вводить их. Чтобы войти на удаленный сервер, выберите сохраненный сеанс и нажмите кнопку «Open» .

Подключение с помощью Vncviewer

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

Вы можете использовать любую программу просмотра VNC, такую как TigerVNC, TightVNC, RealVNC, UltraVNC Vinagre и VNC Viewer для Google Chrome.

Мы будем использовать TigerVNC:  TigerVNC

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

 Gnome

Готово! Теперь вы можете начать работу на удаленном рабочем столе с локального компьютера, используя клавиатуру и мышь.


Итоги

Мы показали вам, как настроить VNC-сервер и подключиться к удаленной машине CentOS 8.

Чтобы запустить отображение для более чем одного пользователя, повторите те же шаги. Создайте исходную конфигурацию, установите пароль с помощью команды vncserver и создайте новый файл службы, используя другой порт.

Ссылка
скопирована
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Виртуализация серверов – это разделение одного физического сервера на несколько виртуальных серверов, каждый из которых работает
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В докум
img
Удаленный доступ к системам давно стал необходимостью, и сейчас с трудом можно представить, что было бы, если бы мы не могли упр
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую р
img
Архитектуры х64 и х86 являются одними из наиболее широко используемых типов архитектур системы команд (АСК или ISA – Instr
img
Gzip – один из самых популярных алгоритмов сжатия, который позволяет сократить размер файла, но при этом сохранить исходный файл
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59