X2Go: различия между версиями
(не показано 13 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
= Описание = | == Описание == | ||
X2Go — свободное программное обеспечение удалённого доступа по протоколу NX. | X2Go — свободное программное обеспечение удалённого доступа по протоколу NX. | ||
Строка 5: | Строка 5: | ||
Веб-сайт: http://x2go.org | Веб-сайт: http://x2go.org | ||
= Возможности = | == Возможности == | ||
* удалённый доступ к рабочему столу и приложениям на каналах связи даже с узкой полосой пропускания; | * удалённый доступ к рабочему столу и приложениям на каналах связи даже с узкой полосой пропускания; | ||
Строка 18: | Строка 18: | ||
* запуск отдельного приложения. | * запуск отдельного приложения. | ||
= Установка = | == Установка == | ||
На сервере: | На сервере: | ||
<syntaxhighlight lang="bash"># apt-get update</syntaxhighlight> | |||
<syntaxhighlight lang="bash"># apt-get install x2goserver x2goserver-printing cups-x2go</syntaxhighlight> | |||
<syntaxhighlight lang="bash"># systemctl enable --now x2goserver</syntaxhighlight> | |||
{{Attention | systemd, начиная с версии {{pkg|238-alt4}}, при разлогинивании по умолчанию завершает пользовательские процессы, поэтому пользовательские сессии будут завершаться даже из состояния Suspended.}} | {{Attention | {{pkg|systemd}}, начиная с версии {{pkg|238-alt4}}, при разлогинивании по умолчанию завершает пользовательские процессы, поэтому пользовательские сессии будут завершаться даже из состояния Suspended.}} | ||
Чтобы этого не случалось, необходимо на сервере в файле {{path|/etc/systemd/logind.conf}} установить <tt>KillUserProcesses=no</tt> или добавить нужного пользователя в <tt>KillExcludeUsers</tt>. | Чтобы этого не случалось, необходимо на сервере в файле {{path|/etc/systemd/logind.conf}} установить <tt>KillUserProcesses=no</tt> или добавить нужного пользователя в <tt>KillExcludeUsers</tt>. | ||
На клиенте: | На клиенте: | ||
apt-get | <syntaxhighlight lang="bash"># apt-get update</syntaxhighlight> | ||
apt-get install x2goclient | <syntaxhighlight lang="bash"># apt-get install x2goclient</syntaxhighlight> | ||
== Подключение к удаленному рабочему столу == | |||
Запустить клиент X2Go можно из «Меню запуска приложений» («Интернет/Сеть» → «X2Go Client») или из командной строки: | |||
$ x2goclient | |||
[[Файл:X2Go-client-01.png|Клиент X2Go]] | |||
{{Note|Также для подключения можно использовать клиент [[Remmina]] или [[Connector]].}} | |||
=== Создание нового подключения === | |||
{{Note|Если клиент X2Go запускается первый раз, окно создания новой сессии будет открыто автоматически.}} | |||
Для создания нового подключения необходимо выбрать в меню пункт «Сессия» → «Новая Сессия…» (<Ctrl>+<N>). На вкладке «Сессия» следует настроить следующие параметры: | |||
* «Имя сессии» — имя сессии, которое поможет отличать серверы друг от друга; | |||
* «Узел» — адрес подключения (IP-адрес или FQDN); | |||
* «Логин» — имя пользователя; | |||
* «SSH-порт»; | |||
* «Тип сессии» — выбрать среду рабочего стола. Если нужной среды нет в списке, можно выбрать пункт «Пользовательский рабочий стол» и в поле «Команда» указать команду, запускающую рабочую среду. | |||
[[Файл:X2Go-client-02.png|Клиент X2Go. Создание нового подключения]] | |||
{{Note|Если подключение к серверу осуществляется с помощью ключей SSH, то можно указать ключ в поле «RSA/DSA-ключ для ssh соединения» или отметить пункт «Автоматический вход», в этом случае будет использоваться ssh-agent. }} | |||
После сохранения настроек соединение появится в списке в главном окне программы. | |||
=== Запуск сессии === | |||
Для запуска сессии необходимо выбрать подключение в списке, ввести пароль и нажать «ОК»: | |||
[[Файл:X2Go-client-03.png|Клиент X2Go. Запуск сессии]] | |||
Появится удаленный рабочий стол. | |||
Если в окне настроек сессии в поле «Тип сессии», был выбран пункт «Опубликованные приложения», то после подключения к удалённому рабочему столу появится возможность выбрать и запустить приложение: | |||
[[Файл:X2Go-client-app.png|Клиент X2Go. Выбор приложения для запуска]] | |||
Для подключения к существующей сессии на удаленном компьютере, в окне настроек сессии в поле «Тип сессии» необходимо выбрать пункт «X2Go/X11 Desktop Sharing»: | |||
[[Файл:X2Go-client-04.png|X2Go. Общий доступ к рабочему столу]] | |||
После ввода пароля подключения необходимо предложено выбрать рабочий стол и нажать кнопку «Полный доступ» или «Только просмотр»: | |||
[[Файл:X2Go-client-05.png|X2Go. Общий доступ к рабочему столу]] | |||
=== Подключение с использованием RSA-ключа === | |||
Можно настроить подключение с использованием RSA-ключа: | |||
# На клиенте сгенерировать ключ SSH: | |||
#: <syntaxhighlight lang="bash">$ 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 | |||
…</syntaxhighlight> | |||
# Скопировать публичный ключ на сервер: | |||
#: <syntaxhighlight lang="bash">$ ssh-copy-id -i ~/.ssh/x2go.pub user@192.168.0.104</syntaxhighlight> | |||
# В настройках сессии (в клиенте X2Go) в поле «RSA/DSA-ключ для ssh соединения» указать приватную часть ключа и отметить пункт «Автоматический вход (через SSH-агент или стандартный SSH-ключ»: | |||
#:[[Изображение:X2Go-client-13.png|X2Go. Настройки сессии]] | |||
# При подключении будет запрошен пароль для ключа (если для ключа пароль не задавался, подключение произойдёт автоматически): | |||
#:[[Изображение:X2Go-client-14.png|X2Go. Запрос пароля для ключа]] | |||
== Использование x2gobroker == | |||
'''x2gobroker''' предоставляет профили сессий, что позволяет не определять их локально на каждом клиенте. | |||
При запуске клиента X2Go в режиме брокера список профилей сеансов предоставляется брокером сеансов X2Go (локально определить их будет нельзя). Список предоставляемых профилей сеансов X2Go может зависеть от имени пользователя или адреса клиента. | |||
=== Настройка x2gobroker === | |||
Установить пакеты: | |||
<syntaxhighlight lang="bash"># apt-get install x2gobroker x2gobroker-common x2gobroker-ssh x2gobroker-daemon x2gobroker-authservice</syntaxhighlight> | |||
<!--Добавить запись о сервере в {{path|/etc/hosts}}: | |||
<syntaxhighlight lang="bash"># echo "server_ip x2goserver" >>/etc/hosts</syntaxhighlight>--> | |||
В файле {{path|/etc/x2go/broker/x2gobroker-sessionprofiles.conf}} задать параметры сессии, например: | |||
<syntaxhighlight lang="ini"> | |||
[x2goserver-mate] | |||
name=Workstation 10 MATE | |||
host=x2goserver | |||
command=MATE | |||
usebrokerpass=true</syntaxhighlight> | |||
Где: | |||
*'''[x2goserver-mate]''' — уникальный идентификатор сессии; | |||
*'''name''' — имя сессии, которое будет отображаться на клиенте; | |||
*'''host''' — IP-адрес или имя x2goserver; | |||
*'''command''' — тип сессии (MATE, KDE и т.п.). | |||
Запустить необходимые сервисы: | |||
<syntaxhighlight lang="bash"># systemctl enable --now x2gobroker-authservice | |||
# systemctl enable --now x2gobroker-daemon</syntaxhighlight> | |||
{{note|x2gobroker-daemon по умолчанию запускается на порту 8080, поэтому перед его запуском необходимо, либо остановить службу ahttpd: | |||
<syntaxhighlight lang="bash"># systemctl disable --now ahttpd</syntaxhighlight> | |||
либо указать другой допустимый номер порта в переменной DAEMON_BIND_ADDRESS в файле {{path|/etc/x2go/broker/defaults.conf}}, например: | |||
<syntaxhighlight lang="ini">DAEMON_BIND_ADDRESS=0.0.0.0:8082</syntaxhighlight>}} | |||
=== Настройка x2goserver === | |||
Установить пакеты: | |||
<syntaxhighlight lang="bash"># apt-get install x2goserver x2goserver-printing cups-x2go x2goserver-x2goagent x2goserver-xsession</syntaxhighlight> | |||
<!--Добавить запись о брокере в {{path|/etc/hosts}}: | |||
<syntaxhighlight lang="bash"># echo "broker_ip x2gobroker" >>/etc/hosts</syntaxhighlight>--> | |||
Запустить сервис: | |||
<syntaxhighlight lang="bash"># systemctl enable --now x2goserver</syntaxhighlight> | |||
=== Настройка x2goclient === | |||
Установить пакет: | |||
<syntaxhighlight lang="bash"># apt-get install x2goclient</syntaxhighlight> | |||
Для возможности обращения к брокеру и серверу по имени добавить записи о брокере и о сервере в {{path|/etc/hosts}}: | |||
<syntaxhighlight lang="bash"># echo "broker_ip x2gobroker" >>/etc/hosts | |||
# echo "server_ip x2goserver" >>/etc/hosts</syntaxhighlight> | |||
Подключение: | |||
<syntaxhighlight lang="bash">$ x2goclient --broker-url=http://x2gobroker:8080/plain/</syntaxhighlight> | |||
Вводим логин/пароль пользователя, которым хотим подключиться к серверу и выбираем нужную сессию: | |||
[[Файл:X2Go-broker-01.png|Выбор сессии в брокере X2Go]] | |||
=== Запуск отдельного графического приложения === | |||
На брокере добавить конфигурацию новой сессии (файл {{path|/etc/x2go/broker/x2gobroker-sessionprofiles.conf}}): | |||
<syntaxhighlight lang="ini">[x2goserver-firefox] | |||
name=Firefox | |||
host=x2goserver | |||
command=firefox | |||
usebrokerpass=true</syntaxhighlight> | |||
В данном случае в параметре '''command''' указывается название приложения, которое должно быть запущено вместо графической сессии. | |||
== Общий каталог == | |||
Для монтирования общего каталога необходимо, чтобы пользователь на сервере был добавлен в группу '''fuse''': | |||
<syntaxhighlight lang="bash"># gpasswd -a user fuse</syntaxhighlight> | |||
Для любого пользователя это можно настроить с помощью модуля '''pam_group'''. | |||
В файл {{path|/etc/security/group.conf}} добавляем строку: | |||
*;*;*;Al0000-2400;fuse | |||
В {{path|/etc/pam.d/sshd}} добавляем: | |||
auth required pam_group.so | |||
Для экспорта каталога необходимо на клиенте выбрать нужную сессию, на вкладке «Общие каталоги», в строке «Путь» выбрать каталог, нажать кнопку «Добавить», установить отметку «Соединять автоматически». Убедиться, что также выбран параметр «Перенаправлять SSH порт для туннельного подсоединения файловой системы через брандмауэры»: | |||
[[Файл:X2Go-client-06.png|X2Go. Общие каталоги]] | |||
При подключении к серверу общий каталог должен быть расположен по следующему пути: {{path|/home/<user>/media/disk}}. | |||
Если автомонтирование не сработало, то на клиенте в окне «Общий доступ к каталогам» можно выбрать каталог и нажать кнопку «Общий доступ»: | |||
[[Файл:X2Go-client-07.png|X2Go. Общий доступ к каталогам]] | |||
== Печать == | |||
{{Note|Необходимо, чтобы пользователь на сервере был добавлен в группу '''fuse''': | |||
<syntaxhighlight lang="bash"># gpasswd -a user fuse</syntaxhighlight>}} | |||
На сервере X2Go: | |||
# Установить пакеты {{pkg|x2goserver-printing}}, {{pkg|cups-x2go}}: | |||
#: <syntaxhighlight lang="bash"># apt-get install x2goserver-printing cups-x2go</syntaxhighlight> | |||
# Запустить {{cmd|system-config-printer}} и добавить принтер «Generic CUPS-X2Go-printer»: | |||
#:[[Файл:X2Go-client-08.png|Добавление принтера Generic CUPS-X2Go]] | |||
На клиенте X2Go: | |||
# В окне «Параметры» выбрать принтер по умолчанию для печати. Установить параметр «Открывать этот диалог перед печатью»: | |||
#:[[Файл:X2Go-client-09.png|X2Go. Окно «Параметры»]] | |||
# При печати документа в сессии X2Go выбрать принтер «Generic CUPS-X2Go-printer» и нажать кнопку «Печать»: | |||
#:[[Файл:X2Go-client-10.png|Выбор принтера для печати в сессии X2Go]] | |||
# После этого на клиенте должно открыться окно выбора локального принтера для печати: | |||
#:[[Файл:X2Go-client-11.png|X2Go. Окно выбора локального принтера для печати]] | |||
== Звук == | |||
На клиенте в настройках сессии открыть вкладку «Медиа», установить отметку «Включить звук» и выбрать «PulseAudio»: | |||
[[Файл:X2Go-client-12.png|X2Go. Вкладка «Медиа»]] | |||
== Отладка == | |||
# Запуск клиента из консоли с параметром --debug: | |||
#: <syntaxhighlight lang="bash">$ x2goclient --debug</syntaxhighlight> | |||
# Просмотр в каталоге удалённого пользователя файлов: | |||
#* {{path|.x2go/C-*/session.log}} | |||
#* {{path| .xsession-x2go-*-errors}} | |||
== Решение проблем == | |||
===Зависание подключений=== | |||
При зависании подключения помогает пересоздание базы данных сеансов (под правами root): | |||
<syntaxhighlight lang="bash"># x2godbadmin --createdb</syntaxhighlight> | |||
Просмотр активных сессий текущего пользователя: | |||
<syntaxhighlight lang="bash">$ 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</syntaxhighlight> | |||
Просмотр активных сессий всех пользователей: | |||
<syntaxhighlight lang="bash"># x2golistsessions_root</syntaxhighlight> | |||
Завершение сессии: | |||
<syntaxhighlight lang="bash"># x2goterminate-session user-50-1675775431_stDMATE_dp24</syntaxhighlight> | |||
===Рендеринг в XFCE=== | |||
В [[XFCE]] или X2Go [https://gitlab.xfce.org/xfce/xfwm4/-/issues/551 существует баг], вызывающий проблемы с рендерингом в композиторе окон при использовании X2Go. | |||
Обходное решение — отключить композитинг: | |||
/usr/bin/xfconf-query -c xfwm4 -p /general/use_compositing -s false | |||
= Сравнение с RX@Etersoft = | == Сравнение с RX@Etersoft == | ||
* {{есть}} Полностью свободен | * {{есть}} Полностью свободен | ||
* {{есть}} Актуальные, а не 4-х летней давности библиотеки NX | * {{есть}} Актуальные, а не 4-х летней давности библиотеки NX |
Текущая версия от 22:48, 29 июля 2024
Описание
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)
- Не умеет пробрасывать смарт-карты