X2Go

Материал из ALT Linux Wiki

Описание

X2Go — свободное программное обеспечение удалённого доступа по протоколу NX.

Веб-сайт: http://x2go.org

Возможности

  • удалённый доступ к рабочему столу и приложениям на каналах связи даже с узкой полосой пропускания;
  • возможность отключения и переподключения в сеанс даже из другого клиента;
  • перенаправление звука;
  • отсутствие ограничения на количество одновременно работающих пользователей;
  • шифрование трафика посредством SSH;
  • общие папки с клиента, доступные на сервере;
  • использование локального принтера на сервере;
  • простой выбор рабочей среды (KDE, Mate, GNOME);
  • возможность оказания удалённой технической поддержки;
  • запуск отдельного приложения.

Установка

На сервере:

# apt-get update
# apt-get install x2goserver x2goserver-printing cups-x2go
# systemctl enable --now x2goserver
Внимание! systemd, начиная с версии 238-alt4, при разлогинивании по умолчанию завершает пользовательские процессы, поэтому пользовательские сессии будут завершаться даже из состояния Suspended.

Чтобы этого не случалось, необходимо на сервере в файле /etc/systemd/logind.conf установить KillUserProcesses=no или добавить нужного пользователя в KillExcludeUsers.

На клиенте:

# apt-get update
# apt-get install x2goclient

Подключение к удаленному рабочему столу

Запустить клиент X2Go можно из «Меню запуска приложений» («Интернет/Сеть» → «X2Go Client») или из командной строки:

$ x2goclient

Клиент X2Go

Примечание: Также для подключения можно использовать клиент Remmina или Connector.


Создание нового подключения

Примечание: Если клиент X2Go запускается первый раз, окно создания новой сессии будет открыто автоматически.


Для создания нового подключения необходимо выбрать в меню пункт «Сессия» → «Новая Сессия…» (<Ctrl>+<N>). На вкладке «Сессия» следует настроить следующие параметры:

  • «Имя сессии» — имя сессии, которое поможет отличать серверы друг от друга;
  • «Узел» — адрес подключения (IP-адрес или FQDN);
  • «Логин» — имя пользователя;
  • «SSH-порт»;
  • «Тип сессии» — выбрать среду рабочего стола. Если нужной среды нет в списке, можно выбрать пункт «Пользовательский рабочий стол» и в поле «Команда» указать команду, запускающую рабочую среду.

Клиент X2Go. Создание нового подключения

Примечание: Если подключение к серверу осуществляется с помощью ключей SSH, то можно указать ключ в поле «RSA/DSA-ключ для ssh соединения» или отметить пункт «Автоматический вход», в этом случае будет использоваться ssh-agent.


После сохранения настроек соединение появится в списке в главном окне программы.

Запуск сессии

Для запуска сессии необходимо выбрать подключение в списке, ввести пароль и нажать «ОК»:

Клиент X2Go. Запуск сессии

Появится удаленный рабочий стол.

Если в окне настроек сессии в поле «Тип сессии», был выбран пункт «Опубликованные приложения», то после подключения к удалённому рабочему столу появится возможность выбрать и запустить приложение:

Клиент X2Go. Выбор приложения для запуска

Для подключения к существующей сессии на удаленном компьютере, в окне настроек сессии в поле «Тип сессии» необходимо выбрать пункт «X2Go/X11 Desktop Sharing»:

X2Go. Общий доступ к рабочему столу

После ввода пароля подключения необходимо предложено выбрать рабочий стол и нажать кнопку «Полный доступ» или «Только просмотр»:

X2Go. Общий доступ к рабочему столу

Подключение с использованием RSA-ключа

Можно настроить подключение с использованием RSA-ключа:

  1. На клиенте сгенерировать ключ SSH:
    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/x2go
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/user/.ssh/x2go
    Your public key has been saved in /home/user/.ssh/x2go.pub
    …
    
  2. Скопировать публичный ключ на сервер:
    $ ssh-copy-id -i ~/.ssh/x2go.pub user@192.168.0.104
    
  3. В настройках сессии (в клиенте X2Go) в поле «RSA/DSA-ключ для ssh соединения» указать приватную часть ключа и отметить пункт «Автоматический вход (через SSH-агент или стандартный SSH-ключ»:
    X2Go. Настройки сессии
  4. При подключении будет запрошен пароль для ключа (если для ключа пароль не задавался, подключение произойдёт автоматически):
    X2Go. Запрос пароля для ключа

Использование x2gobroker

x2gobroker предоставляет профили сессий, что позволяет не определять их локально на каждом клиенте.

При запуске клиента X2Go в режиме брокера список профилей сеансов предоставляется брокером сеансов X2Go (локально определить их будет нельзя). Список предоставляемых профилей сеансов X2Go может зависеть от имени пользователя или адреса клиента.

Настройка x2gobroker

Установить пакеты:

# apt-get install x2gobroker x2gobroker-common x2gobroker-ssh x2gobroker-daemon x2gobroker-authservice


В файле /etc/x2go/broker/x2gobroker-sessionprofiles.conf задать параметры сессии, например:

[x2goserver-mate]
name=Workstation 10 MATE
host=x2goserver
command=MATE
usebrokerpass=true

Где:

  • [x2goserver-mate] — уникальный идентификатор сессии;
  • name — имя сессии, которое будет отображаться на клиенте;
  • host — IP-адрес или имя x2goserver;
  • command — тип сессии (MATE, KDE и т.п.).

Запустить необходимые сервисы:

# systemctl enable --now x2gobroker-authservice
# systemctl enable --now x2gobroker-daemon
Примечание: x2gobroker-daemon по умолчанию запускается на порту 8080, поэтому перед его запуском необходимо, либо остановить службу ahttpd:
# systemctl disable --now ahttpd

либо указать другой допустимый номер порта в переменной DAEMON_BIND_ADDRESS в файле /etc/x2go/broker/defaults.conf, например:

DAEMON_BIND_ADDRESS=0.0.0.0:8082


Настройка x2goserver

Установить пакеты:

# apt-get install x2goserver x2goserver-printing cups-x2go x2goserver-x2goagent x2goserver-xsession


Запустить сервис:

# systemctl enable --now x2goserver

Настройка x2goclient

Установить пакет:

# apt-get install x2goclient

Для возможности обращения к брокеру и серверу по имени добавить записи о брокере и о сервере в /etc/hosts:

# echo "broker_ip x2gobroker" >>/etc/hosts
# echo "server_ip x2goserver" >>/etc/hosts

Подключение:

$ x2goclient --broker-url=http://x2gobroker:8080/plain/

Вводим логин/пароль пользователя, которым хотим подключиться к серверу и выбираем нужную сессию:

Выбор сессии в брокере X2Go

Запуск отдельного графического приложения

На брокере добавить конфигурацию новой сессии (файл /etc/x2go/broker/x2gobroker-sessionprofiles.conf):

[x2goserver-firefox]
name=Firefox
host=x2goserver
command=firefox
usebrokerpass=true

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

Общий каталог

Для монтирования общего каталога необходимо, чтобы пользователь на сервере был добавлен в группу fuse:

# gpasswd -a user fuse

Для любого пользователя это можно настроить с помощью модуля pam_group.

В файл /etc/security/group.conf добавляем строку:

*;*;*;Al0000-2400;fuse

В /etc/pam.d/sshd добавляем:

auth            required        pam_group.so

Для экспорта каталога необходимо на клиенте выбрать нужную сессию, на вкладке «Общие каталоги», в строке «Путь» выбрать каталог, нажать кнопку «Добавить», установить отметку «Соединять автоматически». Убедиться, что также выбран параметр «Перенаправлять SSH порт для туннельного подсоединения файловой системы через брандмауэры»:

X2Go. Общие каталоги

При подключении к серверу общий каталог должен быть расположен по следующему пути: /home/<user>/media/disk.

Если автомонтирование не сработало, то на клиенте в окне «Общий доступ к каталогам» можно выбрать каталог и нажать кнопку «Общий доступ»:

X2Go. Общий доступ к каталогам

Печать

На сервере X2Go:

  1. Установить пакеты x2goserver-printing, cups-x2go:
    # apt-get install x2goserver-printing cups-x2go
    
  2. Запустить system-config-printer и добавить принтер «Generic CUPS-X2Go-printer»:
    Добавление принтера Generic CUPS-X2Go

На клиенте X2Go:

  1. В окне «Параметры» выбрать принтер по умолчанию для печати. Установить параметр «Открывать этот диалог перед печатью»:
    X2Go. Окно «Параметры»
  2. При печати документа в сессии X2Go выбрать принтер «Generic CUPS-X2Go-printer» и нажать кнопку «Печать»:
    Выбор принтера для печати в сессии X2Go
  3. После этого на клиенте должно открыться окно выбора локального принтера для печати:
    X2Go. Окно выбора локального принтера для печати

Звук

На клиенте в настройках сессии открыть вкладку «Медиа», установить отметку «Включить звук» и выбрать «PulseAudio»:

X2Go. Вкладка «Медиа»

Отладка

  1. Запуск клиента из консоли с параметром --debug:
    $ x2goclient --debug
    
  2. Просмотр в каталоге удалённого пользователя файлов:
    • .x2go/C-*/session.log
    • .xsession-x2go-*-errors

Решение проблем

При зависании подключения помогает пересоздание базы данных сеансов (под правами root):

# x2godbadmin --createdb

Просмотр активных сессий текущего пользователя:

$ x2golistsessions 
3602|user-50-1675775431_stDMATE_dp24|50|host-15|R|2023-02-07T16:10:31|7f4877a8ba48ebc9dd95378cf4504f2c|192.168.0.102|59630|59631|2023-02-07T16:10:34|user|185|59632|-1|-1

Просмотр активных сессий всех пользователей:

# x2golistsessions_root

Завершение сессии:

# x2goterminate-session user-50-1675775431_stDMATE_dp24

Сравнение с RX@Etersoft

  • Symbol support vote.svg  Полностью свободен
  • Symbol support vote.svg  Актуальные, а не 4-х летней давности библиотеки NX
  • Symbol oppose vote.svg  Не сертифицировано (RX есть в составе СПТ 7)
  • Symbol oppose vote.svg  Не умеет пробрасывать смарт-карты