Xpra
Описание
- Сайт: https://xpra.org
- Страница проекта на GitHub: https://github.com/Xpra-org/xpra
Xpra — это инструмент, который запускает программы X11, обычно на удаленном хосте, и направляет их отображение на локальный компьютер без потери состояния (позволяет отключение и повторное подключение без прерывания перенаправленного приложения).
Xpra может предоставить удаленный доступ как к отдельным приложениям, так и к новым/существующим сеансам рабочего стола.
Xpra не имеет root-доступа: т.е. приложения, перенаправленные xpra, отображаются на локальном рабочем столе как обычные окна, управляемые локальным оконным менеджером. Xpra также использует собственный протокол, который самонастраивается и относительно нечувствителен к задержкам.
На сервере утилита Xpra запускает в режиме демона нужную программу с заданным идентификатором сеанса, а на клиенте происходит присоединение к сеансу с этим идентификатором.
Доступ к сеансам можно получить по SSH или защитить паролем через простые сокеты TCP (с SSL или без).
Установка
Установить пакет xpra на сервере и на клиенте:
# apt-get install xpra
Использование
Подключение
Локальный дисплей (только для локальных дисплеев локального пользователя):
:DISPLAY
Подключение по SSH:
ssh/[USERNAME[:PASSWORD]@]HOST[:SSH_PORT]/DISPLAY
Для обратной совместимости режим SSH также поддерживает синтаксис:
ssh:[USERNAME[ PASSWORD]@HOST:DISPLAY
В режиме TCP используются номера портов, а не номера дисплеев (если через один TCP-порт доступно несколько дисплеев, то можно также указать номер дисплея):
tcp/[USERNAME@]HOST:PORT[/DISPLAY]
Подключиться по протоколу websocket:
ws://[USERNAME[:PASSWORD]@]HOST:PORT/[DISPLAY]
Некоторые команды
Запустить xpra сервер на указанном дисплее:
$ xpra start :5
Просмотреть список запущенных xpra серверов (на текущей машине, текущим пользователем):
$ xpra list
Found the following xpra sessions:
/run/user/500/xpra:
LIVE session at :1
LIVE session at :102
LIVE session at :5
Остановить xpra сервер на указанном дисплее (если сервер один, дисплей можно не указывать):
$ xpra stop :5
server requested disconnect:
server shutdown
xpra at :5 has exite
Остановить xpra сервер на удалённой машине:
$ xpra stop ssh://user@192.168.0.101/5
Подключиться к серверу, используя локальный дисплей:
$ xpra attach :101
Отключиться от сервера:
$ xpra detach :101
Запуск приложения
Запустить приложение удалённо через SSH без предварительного запуска сервера xpra на сервере:
$ xpra start ssh://user@192.168.0.101 --start="scratch-desktop"
$ xpra start --ssh=ssh ssh://user@192.168.0.101 --start=scratch-desktop
Запуск приложения, с предварительным запуском сервера xpra:
- На сервере: запустить сервер xpra, автоматически выбрать дисплей и запустить программу (например, kolourpaint) на этом виртуальном дисплее:
$ xpra start --start=kolourpaint Actual display used: :2 Actual log file name is now: /run/user/500/xpra/:2.log
- Подключиться локально:
$ xpra attach :2
- Удалённо подключиться к серверу xpra и перенаправить приложение (на 2 дисплее), использующие этот сервер, для отображения на вашем текущем экране:
$ xpra attach --ssh="ssh" ssh://user@192.168.0.101/2
Запуск новой графической сессии
На сервере запустить вложенный сервер X11:
$ xpra start-desktop :101 --start-child=xfce4-session --exit-with-children=yes
Или
$ xpra start-desktop :102 --start=plasmashell
Подключение:
$ xpra attach --ssh="ssh" ssh:user@192.168.0.154:101 --min-size=1200x800 --clipboard-direction=both --clipboard=yes
При подключении к серверу xpra, в системном трее появляется значок, где можно управлять подключением, изменять настройки (например, направление буфера обмена, если он не отключён при запуске сервера):
Получение управления запущенной графической сессией на удаленной машине
Запустить удалённо:
xpra shadow --ssh=ssh ssh://user@192.168.0.137/0
Или:
- Запустить на сервере:
$ xpra shadow :0
- Подключение:
$ xpra attach --ssh=ssh --speaker=no ssh://user@192.168.0.154
На сервере в трее появится значок («Exit» — остановить сервер, «Read Only» — запретить управление, только просмотр рабочего стола):
TCP-сокеты
Запуск на сервере:
$ xpra start --start=kolourpaint --bind-tcp=0.0.0.0:9878
или для управления запущенной графической сессией:
$ xpra shadow --bind-tcp=0.0.0.0:9878
Подключение:
$ xpra attach ws://192.168.0.154:9878
Этот же адрес можно открыть в веб-браузере:
Параметры подключения можно указать с помощью диалоговой формы подключения (http://host:port/connect.html) или указаны как параметры URL, например uri|http://192.168.0.154:9878/?username=user.
Создание TCP сеанса (начиная с версии 4.0.1-alt1 с защитой паролем (пароль записан в файл password):
$ xpra start --start=kolourpaint --bind-tcp=0.0.0.0:9878,auth=file:filename=./password
При подключении указать имя пользователя (и по запросу ввести пароль):
$ xpra attach ws:user//192.168.0.154:9878
Графический интерфейс
Графический интерфейс xpra («Меню запуска приложений» → «Интернет/Сеть» → «Xpra»):
«Browse» — просмотреть список и подключиться к локальному дисплею.
«Connect» — подключиться к удалённому серверу:
«Shadow» — предоставить доступ к рабочему столу.
«Start» — запустить сервер xpra.