В этой статье рассмотрим то, как установить и настроить удаленный доступ 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