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

В этой статье рассмотрим то, как установить и настроить удаленный доступ VNC в настольных версиях CentOS и RHEL с помощью программы TigerVNC-server.

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

В отличие от других доступных VNC-серверов, которые подключаются напрямую к рабочему столу удаленного компьютера, например VNC X или Vino, Tigervnc-vncserver использует другой механизм, который настраивает автономный виртуальный рабочий стол для каждого пользователя.

Итак, приступим.

Шаг 1. Установка и настройка VNC в CentOS

Tigervnc-server — это программа, которая запускает сервер Xvnc и запускает параллельные сеансы Gnome или других сред рабочего стола на рабочем столе VNC.

Доступ к запущенному сеансу пользователя VNC может получить один и тот же пользователь из нескольких различных клиентов VNC. Чтобы установить сервер TigerVNC в CentOS/RHEL, откройте сеанс терминала и введите следующую команду yum с правами root.

# yum install tigervnc-server

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

Имейте в виду, что длина пароля должна быть не менее шести символов.

$ su - vnc_user
$ vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? 
A view-only password is not used

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

# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

Значение 1 после знака @ представляет номер дисплея (порт 5900+дисплей). После каждого запущенного VNC-сервера порт 5900 будет увеличен на 1.

Отредактируем наш файл юнита следующим образом:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=vncuser
Group=vncusers
WorkingDirectory=/home/vncuser
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1280x1024
PIDFIle=/home/vncuser/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

После внесения необходимых изменений в служебный файл VNC перезагружаем демон systemd, чтобы активировать новый файл конфигурации vnc и запустить сервер TigerVNC. Так же не забудьте проверить статус службы, что она действительно запустилась.

# systemctl daemon-reload
# systemctl start vncserver@:1
# systemctl enable vncserver@:1
# systemctl status vncserver@:1
 vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-10-31 21:48:39 EDT; 10s ago
  Process: 4286 ExecStart=/usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)
  Process: 4277 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

...

Чтобы получить список открытых портов в состоянии прослушивания, принадлежащих VNC-серверу, выполните команду ss, которая используется для отображения сетевых сокетов. Поскольку вы запустили только один экземпляр сервера VNC, первый открытый порт — 5901/TCP.

Команду ss необходимо выполнять с правами root. Если вы параллельно запускаете другие экземпляры VNC для разных пользователей, значение порта будет 5902 для второго, 5903 для третьего и так далее. Порты 6000+ используются для подключения X-приложений к VNC-серверу.

# ss -tulpn | grep vnc
tcp    LISTEN     0      128       *:6001                  *:*                   users:(("Xvnc",pid=4294,fd=6))
tcp    LISTEN     0      5         *:5901                  *:*                   users:(("Xvnc",pid=4294,fd=9))
tcp    LISTEN     0      128    [::]:6001               [::]:*                   users:(("Xvnc",pid=4294,fd=5))
tcp    LISTEN     0      5      [::]:5901               [::]:*                   users:(("Xvnc",pid=4294,fd=10))

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

Если запущен только один экземпляр VNC-сервера, вам нужно открыть только первый выделенный порт VNC: 5901/TCP, введя приведенные ниже команды, чтобы применить конфигурацию брандмауэра во время выполнения.

# firewall-cmd --add-port=5901/tcp
# firewall-cmd --add-port=5901/tcp --permanent

Шаг 2. Подключение к рабочему столу CentOS через VNC-клиент

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

Популярным клиентом VNC, используемым в операционных системах Microsoft и полностью совместимым с сервером Linux TigerVNC, является RealVNC VNC Viewer.

Чтобы удаленно подключиться к CentOS Desktop из ОС Microsoft через протокол VNC, откройте программу VNC Viewer, добавьте IP-адрес и номер порта VNC-сервера CentOS и нажмите клавишу Enter.

После установки соединения VNC на вашем экране должно появиться предупреждение о том, что соединение не зашифровано

Нажмите кнопку «Продолжить», введите пароль для VNC-сервера, который был указан при настройке, и вы должны быть удаленно подключены к CentOS Desktop с пользователем, настроенным для запуска экземпляра VNC-сервера.

Одним из популярных клиентом VNC для платформ на базе Linux является Remmina. В целом настойка соединения в этой программе, ничем не отличается от аналогичном клиенте Windows.

Шаг 3. Настройка нескольких сеансов VNC в CentOS

Если вам нужно запустить новый параллельный сеанс VNC под тем же пользователем, откройте консоль терминала, войдите в систему под пользователем, для которого вы хотите запустить новый сеанс VNC, и выполните приведенную ниже команду.

$ vncserver 

New 'centos7:3 (support)' desktop is centos7:3

Starting applications specified in /home/support/.vnc/xstartup
Log file is /home/support/.vnc/centos7:3.log

Новые сеансы VNC откроют следующие доступные порты на базе VNC (в этом примере отображается 5900+3). Чтобы отобразить открытые порты, выполните команду ss без привилегий root, как показано в приведенном ниже отрывке. В нем будут перечислены только запущенные сеансы VNC, принадлежащие вашему пользователю.

$ ss -tulpn | grep vnc
tcp    LISTEN     0      5         *:5901                  *:*                   users:(("Xvnc",pid=1219,fd=9))
tcp    LISTEN     0      5         *:5903                  *:*                   users:(("Xvnc",pid=4156,fd=9))
tcp    LISTEN     0      128       *:6001                  *:*                   users:(("Xvnc",pid=1219,fd=6))
tcp    LISTEN     0      128       *:6003                  *:*                   users:(("Xvnc",pid=4156,fd=6))
tcp    LISTEN     0      5      [::]:5901               [::]:*                   users:(("Xvnc",pid=1219,fd=10))
tcp    LISTEN     0      5      [::]:5903               [::]:*                   users:(("Xvnc",pid=4156,fd=10))
tcp    LISTEN     0      128    [::]:6001               [::]:*                   users:(("Xvnc",pid=1219,fd=5))
tcp    LISTEN     0      128    [::]:6003               [::]:*                   users:(("Xvnc",pid=4156,fd=5))

Теперь удаленно подключитесь к CentOS Desktop, используя этот новый сеанс VNC, и укажите комбинацию IP: порт (192.168.56.11:5903) в клиенте VNC, как показано на рисунке ниже.

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

$ su - your_user
$ killall Xvnc

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

Was this helpful?

0 / 0

Добавить комментарий 0