Установка x2go Настройка клиента Обзор клиента Запуск определенного приложения Проброс принтеров Настройка трансляции токенов в сессию сервера Завершение сессий x2go X2Go Broker
Окружение
X2Go — это программное обеспечение для удаленного рабочего стола с открытым исходным кодом, использующее модифицированный протокол NX 3. X2Go предоставляет удаленный доступ к графическому пользовательскому интерфейсу системы.
В данной статье раскрываются основные моменты по настройке данного варианта удаленного подключения, однако вы так же можете обратиться к официальной документации.
Обратите внимание, что удаленные подключения посредством x2go к типам сессий KDE 5 и выше, GNOME 3.12 и выше НЕ поддерживаются!
Удаленные подключения к типу сессии МАТЕ производятся корректно.
Вы можете подробнее ознакомиться с организацией удаленного доступа, просмотрев наши обучающие видео:
на RuTube — Организация удаленного доступа с помощью x2go. Проброс принтеров, трансляция токенов;
в Яндекс.Дзен — Организация удаленного доступа с помощью x2go. Проброс принтеров, трансляция токенов;
в VK Видео — Организация удаленного доступа с помощью x2go. Проброс принтеров, трансляция токенов.
На наших каналах вы также сможете найти много другой полезной информации.
Для установки x2go перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install x2goserver-xsession x2goserver-fmbindings x2goserver-common x2goserver x2goagent x2goserver-desktopsharing
Здесь и далее команды будут выполняться от пользователя root, если не указано иное.
Для установки x2go на клиенте выполните команду:
dnf install x2goclient
1. Откройте x2go client из «Главного меню» - «Интернет» - «X2Go Client».
2. После открытия потребуется настроить параметры:
Хост: IP-адрес машины;
Пользователь: имя учетной записи.
SSH-порт: если не менялся на клиенте, оставить 22.
3. Для создания новых сессий при подключении к серверу требуется выбрать тип сессии Mate. В РЕД ОС 7.3 по умолчанию используется графическая оболочка Mate. Если же у вас используется другая DE, то тип сессии изменяется в соответствии с нужным требованием.
Если необходимо соединение с активной сессией пользователя, то выберите тип сессии «X2Go/X11 Desktop Sharing».
4. Обратите внимание, что можно настроить автоподключение, указав RSA/DSA ключ через выбор файла ключа.
Для этого необходимо выполнить следующие действия:
ssh-keygen -t rsa или ssh-keygen -t dsa
Будет выведено предложение ввести пароль для защиты файла ключа. Если вы планируете выполнять скрипты по SSH, оставьте пароль пустым.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server или ssh-copy-id -i ~/.ssh/id_dsa.pub user@server
При подключении произойдет запрос фразы-пароля для ключа.
В зависимости от пропускной способности сетевого подключения вы можете выбрать предпочитаемый тип соединения:
MODEM;
ISDN;
ADSL;
WAN;
LAN.
Также данная вкладка предоставляет возможность выбора типа сжатия изображения путем выбора метода сжатия и качества изображения.
Данная вкладка позволяет задать разрешение клиента, т.е. использовать полноэкранный режим или указать свои собственные параметры.
При наличии нескольких физических мониторов вы можете активировать опцию Xinerama.
Для работы с буфером обмена рекомендуется оставить настройку двустороннего буфера обмена для удобства работы.
Соответственно, настройку клавиатуры рекомендуется оставить по умолчанию, однако если есть необходимость ручной настройки, то выберите пункт ручной настройки клавиатуры.
Стоит обратить внимание,что клиент X2Go поддерживает проброс звука, по умолчанию данная опция включена. Однако вы можете изменить свойства подключения и изменить установленное значение по умолчанию в случае необходимости.
Не рекомендуется выбирать тип звука arts или esd, т. к. они являются устаревшими. При попытке выбора любого из данных типов клиент посоветует перейти на тип PulseAudio.
Также вы можете опционально изменить SSH-туннель и порт по умолчанию.
Стоит обратить внимание на такую полезную функцию, как экспорт каталогов.
На данной вкладке вы можете выбрать, каким каталогом желаете поделиться. После выбора и добавления он отобразится в списке, где вы сможете активировать его автоматическое соединение.
После подключения через x2go в домашнем каталоге пользователя будет создан каталог media, именно в него перенаправится каталог с клиента.
Клиент x2go поддерживает также вариант подключения не только к полному рабочему столу сервера, но и к конкретному приложению. Реализовать данное подключение можно при помощи типа сессии «Приложение» или «Удаленные приложения».
При выборе типа сессии приложения вам будет доступен ряд предустановленных вариантов запуска:
При выборе типа сессии «Удаленные приложения» откроется новая сессия, где вручную потребуется выбрать то, какое приложение требуется запустить.
1. Для корректного проброса принтера необходимо установить следующие пакеты:
dnf install x2goserver-printing cups-x2go
dnf install cups-x2go
При необходимости перезапустите службу cups:
systemctl restart cups
2. На сервере X2go добавьте принтер Generic CUPS-X2Go («Главное меню» - «Администрирование» - «Настройки принтера»).
3. В x2go-клиенте перейдите в меню «Опции» - «Установки» - «Печать» и выберите принтер, который будет определн по умолчанию при печати. Установите параметр «Открывать этот диалог перед печатью».
4. При печати документа в сессии x2go выберите принтер «Generic CUPS-X2Go-printer» и нажмите «Печать».
После этого на вашем ПК откроется окно выбора локального принтера для печати.
1. Для настройки трансляции прежде всего требуется убедиться, что настроен КриптоПро и необходимые драйвера для токенов на сервере x2go - инструкция по настройке.
2. Проверьте работоспособность токена в утилите «Ключевые носители и сертификаты» и затем установите флажок в x2go client - Медиа - Поддержка смарт-карт.
Данная поддержка обеспечивает трансляцию как смарт-карт, так и usb-токенов.
На сервере необходимо запустить команду, которая покажет все активные сессии:
x2golistsessions_root
Примерный вывод данной команды:
3226 | user-50-1649312737_stDMATE_dp24 | 50 | localhost.localdomain | S | 2022-04-07T09:25:38 | 8b2f5d3433700b44b5acf5150a7d35fb | 10.81.1.132 | 36540 | 36541 | 2022-04-07T09:35:04 | user | 1839 | 36542 | -1 | -1 7350 | user-51-1649313366_stS1XSHADuserXSHADPP50_dp24 | 51 | localhost.localdomain | R | 2022-04-07T09:36:06 | c9f4d9a24979efe9ddca96ec20e722cc | 10.81.1.132 | 56847 | 56848 | 2022-04-07T09:36:10 | user | 1211 | 56849 | -1 | -1 7769 | user-52-1649313401_stS1XSHADuserXSHADPP0_dp24 | 52 | localhost.localdomain | R | 2022-04-07T09:36:41 | 414d5ac30224e035a46c9d7be0d4608b | 10.81.1.132 | 38461 | 38462 | 2022-04-07T09:36:43 | user | 1176 | 38463 | -1 | -1
Для завершения определенной сессии выполните:
x2goterminate-session <session_id>
где <session_id> - это идентификатор сессии.
Пример:
x2goterminate-session user-50-1649312737_stDMATE_dp24
Если же на сервере требуется применить массовую очистку сессий, то вы можете воспользоваться одним из предложенных ниже скриптов, которые автоматизируют данный процесс.
Пример скрипта завершения сессий и вывода текущей даты при завершении:
#!/bin/bash f=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) NOWDATE=$(date '+%Y-%m-%d_%T') echo -----$NOWDATE------ for i in $(x2golistsessions_root | cut -d "|" -f 2 | sed "s/|/ | /g") do echo terminate - ${i} # вывод на экран x2goterminate-session ${i} # команда завершения пользователя done
Пример скрипта завершения сессий, время простоя которых более 2 часов:
#!/bin/bash for ll in `x2golistsessions_root`; do SessionDate=`echo $ll | awk -F \| '{print $11}';` CleanSessionDate=`echo ${SessionDate//T/ }` FinalDate=`echo ${CleanSessionDate//-//}` CurrentDate=`date +%s` SessionDateEpoch=`date -d "$FinalDate" +%s` DateDiff=$(($CurrentDate-$SessionDateEpoch)) Hours=$(($DateDiff/60/60)) if [[ $Hours -gt 2 ]]; then sid=`echo $ll | awk -F \| '{print $2}'` x2goterminate-session $sid fi done
Пример скрипта завершения сессий, время простоя которых больше 1 дня:
#!/bin/bash LIMIT_DAYS=1 for ll in `x2golistsessions_root`; do #Get the date of last use of the session lastd=`echo $ll | awk -F \| '{print $11}' | awk -F T '{print $1}';` #Date in seconds lastsec=`date -d "$lastd" +%s` #Current date in seconds now=`date +%s` days=`echo $(( ($now - $lastsec) /60/60/24 ))` if [[ $days -gt $LIMIT_DAYS ]]; then sid=`echo $ll | awk -F \| '{print $2}'` echo "terminating session: $sid, $days days old, lastd: $lastd, lastsec: $lastsec, now: $now" x2goterminate-session $sid fi done
Также администратору сервера будет удобен вариант создания сервиса, который по определенному таймеру завершит сессии. Ниже приведен пример сервиса, который по таймеру запускает абстрактный скрипт. Обратите внимание, что необходимо изменить путь к скрипту на ваш.
Создайте файл:
nano /etc/systemd/system/x2go-sessions-killer.service
со следующим содержимым:
[Unit] Description="X2Go service for session cleaning" After=network.target [Service] Type=simple ExecStart=/usr/bin/SCRIPT.sh # укажите ваш путь к скрипту Restart=always RestartSec=7200 [Install] WantedBy=multi-user.target
В строке RestartSec=7200 указано время перезапуска скрипта в секундах. В примере скрипт будет выполняться каждые два часа. Измените это значение на необходимое вам.
RestartSec=7200
Затем в папку /usr/bin/ добавьте ваш скрипт и назначьте ему права на исполнение:
chmod +x /usr/bin/SCRIPT.sh
После этого обновите список сервисов и добавьте сервис завершения сессий в автозагрузку:
systemctl daemon-reload systemctl enable --now x2go-sessions-killer.service
X2Go Broker — модуль, позволяющий централизованно управлять настройками сессий клиентов. В большинстве случаев клиенты X2Go запускаются в автономном режиме, и пользователь сам настраивает одну или несколько сессий для подключения к серверам X2Go, а все настройки сохраняются на локальных компьютерах.
Данный модуль позволяет хранить настроенные профили подключения непосредственно на сервере, а для получения настроек с сервера клиент X2Go должен быть запущен в режиме Broker Mode, при этом локально настроенные профили игнорируются. Это решение полезно в масштабах крупных предприятий для балансировки нагрузки.
Для установки пакетов x2gobroker перейдите в сеанс пользователя root:
dnf install x2gobroker x2gobroker-common x2gobroker-ssh x2gobroker-daemon x2gobroker-authservice
Далее необходимо в файл /etc/hosts добавить запись о сервере:
echo "<ip-адрес_сервера> x2goserver" >> /etc/hosts
В файле /etc/x2go/broker/x2gobroker-sessionprofiles.conf определите следующие параметры:
[x2goserver-mate] name=Test Work Mate host=x2goserver command=MATE usebrokerpass=true
где:
[x2goserver-mate] — уникальный идентификатор сессии;
name — имя сессии, которое будет отображаться на клиенте;
command — тип сессии (MATE, KDE и т.п.).
Затем запустите необходимые для работы сервисы:
systemctl enable x2gobroker-authservice --now systemctl enable x2gobroker-daemon --now
Для настройки сервера необходимо сначала установить соответствующие пакеты командой:
dnf install x2goserver x2goserver-printing cups-x2go x2goserver-xsession
После установки в файл /etc/hosts следует добавить запись о брокере командой:
echo "<ip-адрес_брокера> x2gobroker" >> /etc/hosts
Запустите сервис сервера командой:
systemctl enable x2gocleansessions --now
Для настройки клиента необходимо установить соответствующий пакет командой:
После установки клиента в файл /etc/hosts следует добавить запись о брокере и сервере командой:
echo "<ip-адрес_брокера> x2gobroker" >>/etc/hosts echo "<ip-адрес_сервера> x2goserver" >>/etc/hosts
Для подключения к серверу выполните команду:
x2goclient --broker-url=http://x2gobroker:8080/plain/
В окне аутентификации введите логин и пароль пользователя, с правами которого необходимо подключиться к серверу, и выберите нужную сессию (в примере Test Work Mate).
В активном окне сессии можно убедиться в правильности подключения, проверив IP-адрес машины. Должен быть отображен IP-адрес сервера.
Для запуска определенного приложения на брокере необходимо добавить конфигурацию новой сессии (файл /etc/x2go/broker/x2gobroker-sessionprofiles.conf):
[x2goserver-brasero] name=Test Brasero host=x2goserver command=brasero usebrokerpass=true
В данном случае в параметре command указывается название приложения, которое должно быть запущено вместо графической сессии.
command
Для подключения клиента к серверу используется та же команда:
В окне аутентификации так же потребуется введите логин и пароль пользователя, с правами которого необходимо подключиться к серверу, и выбрать сессию с запуском отдельного приложения (в примере Test Brasero).
После успешного подключения будет открыто окно указанной программы.
Дата последнего изменения: 16.01.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.