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 предоставляет профили сессий, что позволяет не определять их локально на каждом клиенте.
Настройка x2gobroker
Установить пакеты:
# apt-get install x2gobroker x2gobroker-common x2gobroker-ssh x2gobroker-daemon x2gobroker-authservice
Добавить запись о сервере в /etc/hosts:
# echo "server_ip x2goserver" >>/etc/hosts
В файл /etc/x2go/broker/x2gobroker-sessionprofiles.conf добавить:
[x2goserver-mate]
name=Workstation 10 MATE
host=x2goserver
command=MATE
usebrokerpass=true
Где:
- [x2goserver-mate] — уникальный идентификатор сессии;
- name — имя сессии, которое будет отображаться на клиенте;
- command — тип сессии (MATE, KDE и т.п.).
Запустить необходимые сервисы:
# systemctl enable --now x2gobroker-authservice
# systemctl enable --now x2gobroker-daemon
Настройка x2goserver
Установить пакеты:
# apt-get install x2goserver x2goserver-printing cups-x2go x2goserver-x2goagent x2goserver-xsession
Добавить запись о брокере в /etc/hosts:
# echo "broker_ip x2gobroker" >>/etc/hosts
Запустить сервис:
# systemctl enable --now x2goserver
Настройка x2goclient
Установить пакет:
# apt-get install x2goclient
Добавить запись о брокере в /etc/hosts:
# echo "broker_ip x2gobroker" >>/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.
Если автомонтирование не сработало, то на клиенте в окне «Общий доступ к каталогам» можно выбрать каталог и нажать кнопку «Общий доступ»:
Печать
На сервере 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
Сравнение с RX@Etersoft
- Полностью свободен
- Актуальные, а не 4-х летней давности библиотеки NX
- Не сертифицировано (RX есть в составе СПТ 7)
- Не умеет пробрасывать смарт-карты