Поиск по сайту:

Как использовать Apache Guacamole для создания соединения VNC


На этой странице

  1. Предпосылки
  2. Шаг 1. Установите графический интерфейс рабочего стола на свой сервер
  3. Шаг 2. Установите сервер TigerVNC.
  4. Шаг 3. Создайте учетные данные пользователя VNC
  5. Шаг 4. Создайте файл модуля VNC Systemd
  6. Шаг 5. Запустите VNC-сервер
  7. Шаг 6. Настройка брандмауэра
  8. Шаг 7. Создайте подключение VNC к серверу CentOS/Rocky Linux/AlmaLinux.
    1. Доступ к вашему компьютеру с помощью VNC

    1. Создание туннеля SSH
    2. Доступ к вашему компьютеру с помощью VNC

    Недавно вы узнали, как установить и использовать Apache Guacamole для создания SSH-соединения на сервере на базе Rocky Linux 8. Одним из самых популярных применений гуакамоле является использование его в качестве средства просмотра VNC (Virtual Network Computing). Используя VNC, вы можете получить доступ к своему рабочему столу или серверу из любого места без установки какого-либо стороннего клиента.

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

    Предпосылки

    • A server running Rocky Linux, CentOS, AlmaLinux, Ubuntu or Debian.

    • Apache Guacamole should be installed. tutorials for the same.

    • A non-root user with sudo privileges is available on the server you are connecting to.

    • A minimum of 2 CPU cores and 4GB RAM on your remote servers for a smooth VNC connection.

    • Make sure everything is updated.

      CentOS / Rocky Linux / AlmaLinux

      $ sudo dnf update
      

      Ubuntu / Debian

      $ sudo apt update && sudo apt upgrade
      
    • Install basic utility packages. Some of them may already be installed.

      CentOS / Rocky Linux / AlmaLinux

      $ sudo dnf install wget curl nano unzip yum-utils -y
      

      Ubuntu / Debian

      $ sudo apt install wget curl nano unzip -y
      

    Шаг 1. Установите графический интерфейс рабочего стола на свой сервер.

    Для нашего руководства мы установим графическую среду Xfce. Однако вы можете установить любую среду по вашему выбору. Выполните следующие команды, чтобы установить графический интерфейс.

    CentOS/Rocky Linux/AlmaLinux

    $ sudo dnf install -y epel-release
    $ sudo dnf groupinstall -y "Xfce" "base-x"
    $ sudo systemctl set-default graphical
    $ sudo reboot
    

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

    Убунту/Дебиан

    $ sudo apt install xfce4 xfce4-goodies
    $ sudo systemctl set-default graphical
    $ sudo reboot
    

    Шаг 2 - Установите сервер TigerVNC

    Существует множество серверных приложений VNC, которые вы можете установить в своей системе. В нашем руководстве мы будем устанавливать серверное программное обеспечение TigerVNC.

    Выполните следующую команду, чтобы установить сервер TigerVNC.

    CentOS/Rocky Linux/AlmaLinux

    $ sudo dnf install tigervnc-server
    

    Убунту/Дебиан

    $ sudo apt install tigervnc-standalone-server
    

    Шаг 3. Создайте учетные данные пользователя VNC.

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

    CentOS/Rocky Linux/AlmaLinux

    Выполните следующие команды, чтобы создать нового пользователя и установить пароль. Замените vncuser именем пользователя по вашему выбору.

    $ sudo adduser vncuser
    $ sudo passwd vncuser
    

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

    Переключитесь на vncuser.

    $ sudo su - vncuser
    

    Установите пароль доступа к VNC.

    $ vncpasswd 
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Verify:
    

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

    Выйдите из оболочки vncuser.

    $ exit
    

    Убунту/Дебиан

    Выполните следующую команду, чтобы создать нового пользователя и установить пароль. Замените vncuser именем пользователя по вашему выбору.

    $ sudo adduser vncuser
    Adding user `vncuser' ...
    Adding new group `vncuser' (1001) ...
    Adding new user `vncuser' (1001) with group `vncuser' ...
    Creating home directory `/home/vncuser' ...
    Copying files from `/etc/skel' ...
    New password:
    Retype new password:
    passwd: password updated successfully
    Changing the user information for vncuser
    Enter the new value, or press ENTER for the default
            Full Name []:
            Room Number []:
            Work Phone []:
            Home Phone []:
            Other []:
    Is the information correct? [Y/n] y
    

    Переключитесь на vncuser.

    $ sudo su - vncuser
    

    Установите пароль доступа к VNC.

    $ vncpasswd 
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Verify:
    

    Нам нужно настроить файл запуска для TigerVNC для использования Xfce.

    Откройте файл ~/.vnc/xstartup для редактирования.

    $ sudo nano ~/.vnc/xstartup
    

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

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

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Вы можете настроить дополнительные параметры для VNC через файл ~/.vnc/config. Создайте и откройте файл для редактирования.

    $ sudo nano ~/.vnc/config
    

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

    geometry=1024x768
    dpi=96
    depth=24
    

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Протестируйте VNC-сервер.

    $ vncserver
    /usr/bin/xauth:  file /home/vncuser/.Xauthority does not exist
    
    
    New 'vncdesktop:1 (vncuser)' desktop at :1 on machine vncdesktop
    
    Starting applications specified in /home/vncuser/.vnc/xstartup
    Log file is /home/vncuser/.vnc/vncdesktop:1.log
    
    Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vncuser/.vnc/passwd :1 to connect to the VNC server.
    

    Вы можете получить список всех текущих сеансов VNC, используя следующую команду.

    $ vncserver -list
    TigerVNC server sessions:
    
    X DISPLAY #     RFB PORT #      PROCESS ID
    :1              5901            1029
    

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

    $ vncserver -kill :1
    Killing Xtigervnc process ID 1029... success!
    

    Выйдите из пользовательской оболочки.

    $ exit
    

    Шаг 4. Создайте файл модуля VNC Systemd.

    CentOS/Rocky Linux/AlmaLinux

    Файл сервисного модуля systemd TigerVNC доступен в каталоге /lib/systemd/system. Скопируйте файл в каталог /etc/systemd/system.

    $ sudo cp /lib/systemd/system/:1.service
    

    Сервер VNC по умолчанию работает на порту 5900. Каждый пользователь должен запускать свой экземпляр сервера VNC на отдельном порту. Число :1 в конце команды указывает VNC запустить службу на субпорте 5900. Следовательно, :1 преобразуется в порт 5900, :2 преобразуется в порт 5902 и так далее.

    Не только VNC должен знать номер порта для запуска службы, но вам также необходимо указать, какой пользователь будет запускать сервер под каким номером порта. Вы можете настроить это, отредактировав файл /etc/tigervnc/vncserver.users. Откройте его для редактирования.

    $ sudo nano /etc/tigervnc/vncserver.users
    

    Введите значение :1=vncuser прямо перед # :2=andrew, чтобы оно выглядело следующим образом.

    # TigerVNC User assignment
    #
    # This file assigns users to specific VNC display numbers.
    # The syntax is <display>=<username>. E.g.:
    #
      :1=vncuser
    # :2=andrew
    # :3=lisa
    

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Убунту/Дебиан

    Установщик не устанавливает служебный файл systemd в системе Ubuntu или Debian. Вам нужно создать его вручную. Создайте и откройте файл модуля systemd для TigerVNC.

    $ sudo nano /etc/systemd/system/
    

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

    [Unit]
    Description=Remote desktop service (VNC)
    After=syslog.target network.target
    
    [Service]
    Type=simple
    User=vncuser
    PAMName=login
    PIDFile=/home/%u/.vnc/%H%i.pid
    ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
    ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
    ExecStop=/usr/bin/vncserver -kill :%i
    
    [Install]
    WantedBy=multi-user.target
    

    Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.

    Следующий шаг является общим для всех дистрибутивов Linux.

    Перезагрузите демон systemd, чтобы активировать службу.

    $ sudo systemctl daemon-reload
    

    Шаг 5 — Запустите VNC-сервер

    CentOS/Rocky Linux/AlmaLinux

    Запустите службу сервера VNC.

    $ sudo systemctl start :1
    

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

    $ sudo systemctl enable :1
    

    Проверить статус услуги.

    $ sudo systemctl status :1
    ? :1.service - Remote desktop service (VNC)
       Loaded: loaded (/etc/systemd/system/:1.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2022-03-16 01:16:18 UTC; 6s ago
      Process: 6777 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS)
     Main PID: 6784 (vncsession)
        Tasks: 0 (limit: 11179)
       Memory: 1.1M
       CGroup: /system.slice/system-vncserver.slice/:1.service
               ? 6784 /usr/sbin/vncsession vncuser :1
    
    Mar 16 01:16:18 guacamole systemd[1]: Starting Remote desktop service (VNC)...
    Mar 16 01:16:18 guacamole systemd[1]: Started Remote desktop service (VNC).
    

    Убунту/Дебиан

    Запустите службу сервера VNC.

    $ sudo systemctl start 
    

    Включите службу VNC.

    $ sudo systemctl enable 
    

    Проверить статус услуги.

    $ sudo systemctl status 
    ?  - Remote desktop service (VNC)
         Loaded: loaded (/etc/systemd/system/; enabled; vendor preset: enabled)
         Active: active (running) since Sat 2022-03-19 09:42:28 UTC; 6s ago
        Process: 1420 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
       Main PID: 1455 (vncserver)
          Tasks: 0 (limit: 4686)
         Memory: 884.0K
         CGroup: /system.slice/system-vncserver.slice/
                 ? 1455 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
    
    Mar 19 09:42:28 vncdesktop systemd[1]: Starting Remote desktop service (VNC)...
    Mar 19 09:42:28 vncdesktop systemd[1420]: pam_unix(login:session): session opened for user vncuser by (uid=0)
    Mar 19 09:42:28 vncdesktop systemd[1]: Started Remote desktop service (VNC).
    Mar 19 09:42:29 vncdesktop systemd[1455]: pam_unix(login:session): session opened for user vncuser by (uid=0)
    

    Шаг 6 — Настройте брандмауэр

    Чтобы сделать VNC доступным по сети, нам нужно открыть его порты.

    CentOS/Rocky Linux/AlmaLinux

    Выполните следующую команду, чтобы открыть порты VNC и перезагрузить брандмауэр.

    $ sudo firewall-cmd --permanent --add-service=vnc-server
    $ sudo firewall-cmd --reload
    

    Убунту/Дебиан

    $ sudo ufw allow 5901:5910/tcp
    $ sudo ufw reload
    

    Шаг 7. Создайте VNC-подключение к серверу CentOS/Rocky Linux/AlmaLinux.

    Откройте URL-адрес гуакамоле и введите свои учетные данные для входа.

    Посетите вкладку «Подключения» в разделе «Настройки гуакамоле». Нажмите на кнопку Новое подключение.

    Выберите имя для вашего подключения и выберите VNC в раскрывающемся меню.

    В разделе «Параметры» введите IP-адрес вашего сервера (в нашем случае 167.172.46.187) в качестве имени хоста и 5901 в качестве порта. В разделе Аутентификация введите имя пользователя и пароль системы VNC.

    Если вы хотите включить какие-либо дополнительные настройки, сделайте это. Щелкните Сохранить, чтобы завершить добавление соединения.

    Доступ к вашей машине с помощью VNC

    Посетите панель управления гуакамоле и щелкните свое соединение VNC в разделе «Все соединения».

    Вас встретит экран блокировки вашего сервера.

    Закройте его и введите свои учетные данные пользователя VNC.

    Нажмите кнопку «Разблокировать», чтобы перейти на главный экран сервера/рабочего стола.

    Вы можете начать работать на своей машине.

    Шаг 8. Создайте VNC-соединение с удаленным сервером Ubuntu/Debian.

    Если ваша установка Guacamole и среда рабочего стола находятся на одном сервере, вы можете получить доступ к своему VNC-серверу, выполнив шаги, описанные выше. Наша установка Rocky Linux была на том же сервере, но наша среда Ubuntu была на другом сервере. В таком случае мы будем использовать туннелирование SSH для создания VNC-соединения с сервером, поскольку это более безопасный метод.

    Откройте URL-адрес гуакамоле и введите свои учетные данные для входа.

    Посетите вкладку «Подключения» в разделе «Настройки гуакамоле». Нажмите на кнопку Новое подключение.

    Выберите имя для вашего подключения и выберите VNC в раскрывающемся меню.

    В разделе «Параметры» введите адрес localhost в качестве имени хоста и 5001 в качестве порта. Оставьте раздел «Аутентификация» пустым, так как мы будем использовать его на следующем шаге. Мы также поговорим о том, почему мы использовали localhost в качестве хоста.

    Если вы хотите включить какие-либо дополнительные настройки, сделайте это. Щелкните Сохранить, чтобы завершить добавление соединения.

    Создайте SSH-туннель

    Запустите следующую команду из терминала сервера, на котором размещен гуакамоле.

    $ ssh -L 5001:localhost:5901 
    

    Давайте пройдемся по тому, что здесь происходит. Приведенная выше команда перенаправляет SSH-соединение вашей системы на удаленный сервер, используя переадресацию локального порта.

    • Флаг -L указывает переадресацию локального порта.
    • Порт 5001 — это порт на вашем компьютере с гуакамоле, через который мы можем получить доступ к удаленному серверу. Вы можете выбрать другой порт, если хотите.
    • localhost:5901 — это удаленный сервер VNC и номер дисплея (и соответствующий ему номер порта), к которому нужно подключиться. Поскольку мы выполняем перенаправление локальных портов, адрес удаленного сервера преобразуется для нас в localhost.
    • [email  в нашем случае — это пользователь SSH и IP-адрес удаленного сервера Ubuntu/Debian, к которому мы обращаемся.

    Туннель SSH будет оставаться открытым, пока выполняется команда. Введите exit на терминале, чтобы выйти из туннеля и закрыть соединение VNC.

    Доступ к вашей машине с помощью VNC

    Посетите панель управления гуакамоле и щелкните свое соединение VNC в разделе «Все соединения».

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

    После успешного подтверждения вы попадете на экран рабочего стола вашей системы.

    Вы можете начать работать на своей машине.

    Заключение

    На этом мы завершаем наше руководство по использованию Apache Guacamole для создания соединения VNC с сервером Linux. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.