X2Go
Описание
X2Go — свободное программное обеспечение удалённого доступа по протоколу NX.
Веб-сайт: http://x2go.org
Возможности
- удалённый доступ к рабочему столу и приложениям на каналах связи даже с узкой полосой пропускания;
- возможность отключения и переподключения в сеанс даже из другого клиента;
- перенаправление звука;
- отсутствие ограничения на количество одновременно работающих пользователей;
- шифрование трафика посредством SSH;
- общие папки с клиента, доступные на сервере;
- использование локального принтера на сервере;
- простой выбор рабочей среды (KDE, Mate, GNOME);
- возможность оказания удалённой технической поддержки;
- запуск отдельного приложения.
Установка
На сервере:
# apt-get update
# apt-get install x2goserver x2goserver-printing cups-x2go
# systemctl enable --now x2goserver
Чтобы этого не случалось, необходимо на сервере в файле /etc/systemd/logind.conf установить KillUserProcesses=no или добавить нужного пользователя в KillExcludeUsers.
На клиенте:
# apt-get update
# apt-get install x2goclient
Подключение к удаленному рабочему столу
Запустить клиент X2Go можно из «Меню запуска приложений» («Интернет/Сеть» → «X2Go Client») или из командной строки:
$ x2goclient
Создание нового подключения
Для создания нового подключения необходимо выбрать в меню пункт «Сессия» → «Новая Сессия…» (<Ctrl>+<N>). На вкладке «Сессия» следует настроить следующие параметры:
- «Имя сессии» — имя сессии, которое поможет отличать серверы друг от друга;
- «Узел» — адрес подключения (IP-адрес или FQDN);
- «Логин» — имя пользователя;
- «SSH-порт»;
- «Тип сессии» — выбрать среду рабочего стола. Если нужной среды нет в списке, можно выбрать пункт «Пользовательский рабочий стол» и в поле «Команда» указать команду, запускающую рабочую среду.
После сохранения настроек соединение появится в списке в главном окне программы.
Запуск сессии
Для запуска сессии необходимо выбрать подключение в списке, ввести пароль и нажать «ОК»:
Появится удаленный рабочий стол.
Если в окне настроек сессии в поле «Тип сессии», был выбран пункт «Опубликованные приложения», то после подключения к удалённому рабочему столу появится возможность выбрать и запустить приложение:
Для подключения к существующей сессии на удаленном компьютере, в окне настроек сессии в поле «Тип сессии» необходимо выбрать пункт «X2Go/X11 Desktop Sharing»:
После ввода пароля подключения необходимо предложено выбрать рабочий стол и нажать кнопку «Полный доступ» или «Только просмотр»:
Подключение с использованием RSA-ключа
Можно настроить подключение с использованием RSA-ключа:
- На клиенте сгенерировать ключ 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 …
- Скопировать публичный ключ на сервер:
$ ssh-copy-id -i ~/.ssh/x2go.pub user@192.168.0.104
- В настройках сессии (в клиенте X2Go) в поле «RSA/DSA-ключ для ssh соединения» указать приватную часть ключа и отметить пункт «Автоматический вход (через SSH-агент или стандартный SSH-ключ»:
- При подключении будет запрошен пароль для ключа (если для ключа пароль не задавался, подключение произойдёт автоматически):
Использование 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
# 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/
Вводим логин/пароль пользователя, которым хотим подключиться к серверу и выбираем нужную сессию:
Запуск отдельного графического приложения
На брокере добавить конфигурацию новой сессии (файл /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 порт для туннельного подсоединения файловой системы через брандмауэры»:
При подключении к серверу общий каталог должен быть расположен по следующему пути: /home/<user>/media/disk.
Если автомонтирование не сработало, то на клиенте в окне «Общий доступ к каталогам» можно выбрать каталог и нажать кнопку «Общий доступ»:
Печать
# gpasswd -a user fuse
На сервере X2Go:
- Установить пакеты x2goserver-printing, cups-x2go:
# apt-get install x2goserver-printing cups-x2go
- Запустить system-config-printer и добавить принтер «Generic CUPS-X2Go-printer»:
На клиенте X2Go:
- В окне «Параметры» выбрать принтер по умолчанию для печати. Установить параметр «Открывать этот диалог перед печатью»:
- При печати документа в сессии X2Go выбрать принтер «Generic CUPS-X2Go-printer» и нажать кнопку «Печать»:
- После этого на клиенте должно открыться окно выбора локального принтера для печати:
Звук
На клиенте в настройках сессии открыть вкладку «Медиа», установить отметку «Включить звук» и выбрать «PulseAudio»:
Отладка
- Запуск клиента из консоли с параметром --debug:
$ x2goclient --debug
- Просмотр в каталоге удалённого пользователя файлов:
- .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
Рендеринг в XFCE
В XFCE или X2Go существует баг, вызывающий проблемы с рендерингом в композиторе окон при использовании X2Go.
Обходное решение — отключить композитинг:
/usr/bin/xfconf-query -c xfwm4 -p /general/use_compositing -s false
Сравнение с RX@Etersoft
- Полностью свободен
- Актуальные, а не 4-х летней давности библиотеки NX
- Не сертифицировано (RX есть в составе СПТ 7)
- Не умеет пробрасывать смарт-карты