VNC (Virtual Network Computing) Server — это программное обеспечение, которое позволяет удаленно управлять компьютером через сеть. С его помощью пользователь может зайти на другой компьютер и выполнять на нем любые действия так, будто он сидит перед ним. VNC Server используется для удаленного доступа к компьютерам, управления серверами и даже для обучения. В этой статье мы рассмотрим, как настроить и использовать VNC Server в различных операционных системах.
В отличие от других доступных VNC-серверов, которые подключаются непосредственно к рабочему столу, таких как VNC X или Vino, tigervnc-vncserver использует другой механизм, который настраивает отдельный виртуальный рабочий стол для каждого пользователя.
Шаг 1: Установка и настройка VNC на CentOS
1. Tigervnc-server — это программа, которая выполняет Xvnc-сервер и запускает параллельные сессии Gnome или других настольных сред на рабочем столе VNC.
Запущенная сессия VNC может быть доступна одному и тому же пользователю с нескольких VNC-клиентов. Чтобы установить TigerVNC сервер в CentOS/RHEL, откройте терминальную сессию и выполните следующую команду yum с правами root.
$ sudo yum install tigervnc-server
2. После установки программы войдите в систему под пользователем, под которым вы хотите запустить программу VNC, и выполните в терминале следующую команду, чтобы настроить пароль для сервера VNC.
Помните, что пароль должен состоять как минимум из шести символов.
$ su - your_user
$ vncpasswd
3. Далее добавьте файл конфигурации службы VNC для вашего пользователя через файл конфигурации демона, размещенный в дереве каталогов systemd. Для копирования файла шаблона VNC необходимо выполнить следующую команду cp с привилегиями root.
Если ваш пользователь не имеет привилегий sudo, либо переключитесь непосредственно на учетную запись root, либо выполните команду из учетной записи с привилегиями root.
# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
4. На следующем этапе отредактируйте скопированный файл конфигурации шаблона VNC из каталога /etc/systemd/system/ и замените следующие значения, чтобы отразить вашего пользователя, как показано в примере ниже.
Значение 1 после знака @ представляет собой номер дисплея (порт 5900+дисплей). Кроме того, для каждого запущенного VNC-сервера порт 5900 будет увеличиваться на 1.
# vi /etc/systemd/system/vncserver@:1.service
Добавьте следующие строки в файл vncserver@:1.service.
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=tecmint
Group=tecmint
WorkingDirectory=/home/tecmint
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1280x1024
PIDFile=/home/tecmint/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
5. После внесения соответствующих изменений в файл службы VNC перезагрузите программу инициализации системы systemd, чтобы подхватить новый файл конфигурации vnc и запустить сервер TigerVNC.
Также проверьте состояние службы VNC и включите демон VNC по всей системе, выполнив следующие команды.
# systemctl daemon-reload
# systemctl start vncserver@:1
# systemctl status vncserver@:1
# systemctl enable vncserver@:1
6. Чтобы перечислить открытые порты в состоянии прослушивания, принадлежащие серверу VNC, выполните команду ss, которая используется для отображения сетевых сокетов. Поскольку вы запустили только один экземпляр VNC-сервера, первый открытый порт — 5901/TCP.
Опять же, команда ss должна быть выполнена с привилегиями root. Если вы запустите параллельно другие экземпляры VNC для разных пользователей, значение порта будет 5902 для второго, 5903 для третьего и так далее. Порты 6000+ используются для разрешения X-приложениям подключаться к VNC-серверу.
# ss -tulpn| grep vnc
7. Для того чтобы внешние клиенты VNC могли подключаться к VNC-серверу, необходимо убедиться, что соответствующие открытые порты VNC пропускаются через ваш брандмауэр.
Если запущен только один экземпляр VNC-сервера, необходимо открыть только первый выделенный VNC-порт: 5901/TCP, выполнив следующие команды для применения конфигурации брандмауэра во время выполнения.
# firewall-cmd --add-port=5901/tcp
# firewall-cmd --add-port=5901/tcp --permanent
Шаг 2: Подключение к рабочему столу CentOS через VNC-клиент
8. Будучи платформенно-независимым протоколом, удаленные VNC-подключения с графическим интерфейсом пользователя могут быть выполнены практически из любой операционной системы с графическим интерфейсом и специализированным VNC-клиентом.
Популярным VNC-клиентом, используемым в операционных системах на базе Microsoft и полностью совместимым с сервером Linux TigerVNC, является RealVNC VNC Viewer.
Для того чтобы удаленно подключиться к CentOS Desktop из ОС Microsoft по протоколу VNC, откройте программу VNC Viewer, введите IP-адрес и номер порта VNC-сервера CentOS и нажмите клавишу [enter].
После установления VNC-соединения на экране появится предупреждение о том, что соединение не зашифровано, как показано на скриншотах ниже.
9. Чтобы обойти предупреждение, нажмите кнопку Продолжить, добавьте пароль, установленный для VNC-сервера в пункте 2, и вы должны быть удаленно подключены к CentOS Desktop с пользователем, настроенным для запуска экземпляра VNC-сервера.
10. Если на экране появится сообщение о новой аутентификации, а у пользователя нет прав root, просто нажмите кнопку Cancel, чтобы продолжить работу с CentOS Desktop, как показано на скриншоте ниже.
Имейте в виду, что установленная связь VNC между сервером и клиентом и обмен любыми данными (кроме пароля) происходит по незашифрованному каналу. Чтобы зашифровать и защитить передачу данных VPN, сначала необходимо настроить безопасный SSH-туннель и запускать любой последующий VPN-трафик через SSH-туннель.
11. Чтобы удаленно подключиться к рабочему столу CentOS по протоколу VNC с других рабочих столов CentOS, сначала убедитесь, что пакет vinagre установлен в вашей системе, выполнив следующую команду.
$ sudo yum install vinagre
12. Чтобы открыть утилиту vinagre, перейдите в Applications -> Utilities -> Remote Desktop Viewer, как показано на скриншоте ниже.
13. Для удаленного подключения к рабочему столу CentOS нажмите кнопку Connect, выберите протокол VNC из списка и добавьте IP-адрес и порт (5900+номер дисплея) удаленного сервера VNC. Также укажите пароль для пользователя VNC, как показано на следующих скриншотах.
14. Другим популярным клиентом VNC для платформ на базе Linux является Remmina, клиент удаленного рабочего стола, который особенно часто используется в дистрибутивах на базе Debian, работающих в среде рабочего стола GNOME.
Для установки клиента Remmina Remote Desktop в дистрибутивах на базе Debian выполните следующую команду.
$ sudo apt-get install remmina
Шаг 3: Настройка нескольких сеансов VNC на CentOS
15. Если вам нужно запустить новую параллельную сессию VNC под тем же пользователем, откройте консоль Terminal, войдите под пользователем, под которым вы хотите запустить новую сессию VNC, и выполните следующую команду.
При первом запуске сервера вам будет предложено ввести новый пароль для этой сессии. Однако имейте в виду, что эта сессия запускается с правами вашего пользователя, вошедшего в систему, и независимо от запущенной сессии VNC-сервера systemd.
$ vncserver
16. Новые сеансы VNC откроют следующие доступные порты на базе VNC (в данном примере 5900+3). Для отображения открытых портов выполните команду ss без привилегий root, как показано в приведенном ниже отрывке. В списке будут перечислены только запущенные сеансы VNC, принадлежащие вашему пользователю.
$ ss -tlpn| grep Xvnc
17. Теперь удаленно подключитесь к CentOS Desktop, используя новую сессию VNC, и введите комбинацию IP:порт (192.168.1.23:5903) в VNC-клиенте, как показано на рисунке ниже.
Чтобы остановить экземпляры VNC-сервера, запущенные с правами этих вошедших в систему пользователей, выполните следующую команду без привилегий root. Эта команда уничтожит все запущенные экземпляры VNC, принадлежащие только пользователю, который их запустил.
$ su - your_user
$ killall Xvnc
Вот и все! Теперь вы можете получить доступ к вашей системе CentOS и выполнять административные задачи, используя графический интерфейс пользователя, предоставляемый операционной системой.