Вопрос или проблема
Я начал пробовать X2Go вместо VNC для управления своими компьютерами под управлением Ubuntu, и хотя он в целом работает, я не совсем понимаю, как сделать следующие вещи.
Но сначала – я использую Ubuntu 20.04 с рабочим столом MATE на обоих компьютерах и использую sudo add-apt-repository ppa:x2go/stable
(http://ppa.launchpad.net/x2go/stable/ubuntu
). На компьютере, который должен управляться (сервере), я установил:
sudo apt install x2goserver x2goserver-xsession
sudo apt install x2godesktopsharing
sudo usermod -a -G x2godesktopsharing myuser
На компьютере, который управляет (клиенте), я установил:
sudo apt install x2goclient
- На сервере я действительно получаю “апплет” рабочего стола, где я могу включать или отключать сервер, что мне довольно нравится:
Тем не менее, допустим, я вхожу на сервер через ssh, и сервер x2go отключил совместный доступ к рабочему столу. Тогда мой вопрос:
- Как я могу включить (и отключить) совместный доступ к рабочему столу на сервере x2go из командной строки (по ssh)?
Далее, мне интересно, как с клиентом и размерами экрана – позвольте мне проиллюстрировать на примере с VNC:
Если у меня есть сервер VNC на моем серверном компьютере (например, 192.168.0.100) на порту 5900, я могу подключиться к нему из командной строки, используя, скажем, ssvncviewer
:
ssvncviewer 192.168.0.100
Если у моего сервера есть рабочий стол с более высоким разрешением (размер пикселя, скажем, 1920 x 1200), а у моего клиента – с более низким разрешением (размер пикселя, скажем, 800 x 600), тогда вышеуказанная команда показывает “выемку” рабочего стола сервера без масштабирования:
Затем, если я нажму F9, чтобы выдать “Во весь экран” в SSVNC, эта “выемка” занимает весь экран – и поскольку масштабирования нет, текст на рабочем столе сервера читаем, но я все равно могу перемещаться, перемещая указатель мыши к краям экрана (верх, низ, лево, право) – и затем автопрокрутка (или автопанорама) выполняется с помощью ssvncviewer
.
С другой стороны, если я введу
ssvncviewer -scale auto 192.168.0.100
… тогда я получаю полный (большой) рабочий стол сервера, масштабированный до окна, которое может поместиться на клиенте – так что я могу наблюдать за рабочим столом сервера в целом; однако из-за масштабирования текст на самом деле не читаем (обратите внимание, артефакты внизу скриншота являются результатом кэширования сервера VNC):
Ну, мне действительно нравится возможность переключаться между этими двумя режимами просмотра (некалиброванная выемка против масштабированной)… однако:
- Я действительно не могу найти опции для масштабированного и немасштабированного просмотра в графическом интерфейсе клиента X2Go, кроме этих (Сессия/Управление сессиями…/(выберите сессию)/Предпочтения сессии/ Ввод/Вывод):
Итак, если я подключаюсь через X2GoClient с размером “Пользовательский”, я получаю выемку, но по центру:
… и я не могу найти способ прокрутки; если я затем нажму CTRL+ALT+SHIFT+F, я перехожу в режим полного экрана – но он масштабирован (не читаемый текст); если я снова нажму CTRL+ALT+SHIFT+F, я выхожу из режима полного экрана, но тогда окно больше не показывает выемку, а вместо этого показывает масштабированный вид:
И конечно, если я начну в полноэкранном режиме, то я всегда получаю только масштабированный вид.
Так что мои вопросы здесь:
- Существует ли способ запустить соединение клиента X2Go из командной строки (как я могу запустить соединение клиента VNC, например
ssvncviewer 192.168.0.100
)? - Существует ли режим “выемки” (то есть не масштабируемый) в клиенте X2Go с какой-либо формой интерактивной прокрутки, и если да, то как я могу его активировать (либо через GUI, либо через командную строку)?
Я в конце концов нашел этот пост в почтовом списке, Альтернативы командной строки для x2goclient-cli, предположительно с 2011 года:
Если я правильно интерпретировал недавний почтовый трафик (и дорожную карту в вики), x2goclient-cli устарел и больше не будет активно разрабатываться. Насколько я могу видеть, в настоящее время есть две альтернативы использованию x2goclient-cli:
- x2goclient (QT-клиент) с параметрами командной строки.
- pyhoca-cli.
Я попробовал посмотреть параметры командной строки x2goclient
, и я не могу действительно разобраться, как начать сессию с его помощью …
С другой стороны, я нашел, что pyhoca-cli
находится в репозиториях Ubuntu:
… и я нашел документ о его использовании:
Поэтому я установил его с помощью:
sudo apt install pyhoca-cli
… и следуя инструкциям, я попробовал это (поскольку я уже установил соединения через графический интерфейс x2goclient, я убрал --add-to-known-hosts
из примеров на странице); сначала нужно “перечислить рабочие столы”, то есть перечислить сеансы рабочего стола (так что вам нужно хотя бы раз установить соединение через графический интерфейс клиента X2Go)
$ pyhoca-cli --server 192.168.0.100 --list-desktops --user myuser
pyhoca-cli[139077] УВЕДОМЛЕНИЕ: подготовка запрашиваемой сессии X2Go
...
Пароль:
pyhoca-cli[139077] (x2gocontrolsession-pylib) УВЕДОМЛЕНИЕ: подключение к [192.168.0.100]:22
pyhoca-cli[139077] (PyHocaCLI) УВЕДОМЛЕНИЕ: аутентификация прошла успешно
Рабочие столы X2Go, доступные для совместного использования
===================================
Хост: 192.168.0.100 - [192.168.0.100]:22
Имя пользователя: myuser
myuser@:0
Итак, из вышеуказанного, у меня есть сессия myuser@:0
– и это то, к чему я могу подключиться:
$ pyhoca-cli --server 192.168.0.100 --share-desktop myuser@:0 --user myuser --share-mode 1
pyhoca-cli[139324] УВЕДОМЛЕНИЕ: подготовка запрашиваемой сессии X2Go
...
pyhoca-cli[139324] (PyHocaCLI) УВЕДОМЛЕНИЕ: продолжаю интерактивный вход для пользователя ,,myuser''
Пароль:
pyhoca-cli[139324] (x2gocontrolsession-pylib) УВЕДОМЛЕНИЕ: подключение к [192.168.0.100]:22
pyhoca-cli[139324] (PyHocaCLI) УВЕДОМЛЕНИЕ: аутентификация прошла успешно
pyhoca-cli[139324] (x2gosession-pylib) УВЕДОМЛЕНИЕ: Используя сессию myuser-50-1639641479_stS1XSHADmyuserXSHADPP0_dp24 в качестве основной сессии для профиля Pyhoca-Client_Session.
pyhoca-cli[139324] (PyHocaCLI) УВЕДОМЛЕНИЕ: Нажмите CTRL+C, чтобы завершить совместный доступ к рабочему столу для этой сессии...
^CПрерывание клавиатуры
2021-12-16T07:58:35Z
pyhoca-cli[139324] (x2gosession-pylib) ПРЕДУПРЕЖДЕНИЕ: совместный доступ к локальной папке отключен для этого профиля сессии
pyhoca-cli[139324] (x2gosession-pylib) ПРЕДУПРЕЖДЕНИЕ: совместный доступ к локальной папке отключен для этого профиля сессии
pyhoca-cli[139324] (x2goterminalsession-pylib) УВЕДОМЛЕНИЕ: очистка сессии myuser-50-1639641479_stS1XSHADmyuserXSHADPP0_dp24 после завершения
pyhoca-cli[139324] (PyHocaCLI) УВЕДОМЛЕНИЕ: Сессия X2Go myuser-50-1639641479_stS1XSHADmyuserXSHADPP0_dp24 завершена
Так что это работает – обратите внимание:
- Я испытывал, что команда
--share-desktop
может не удастся подключиться; в этом случае мне пришлось остановитьpyhoca-cli
; затем запустить клиент X2Go в графическом режиме и подключиться оттуда один раз (успешно); после этого--share-desktop
снова начал работать - Команда
--share-desktop
снова открывает центрированную выемку, как описано в OP – которая затем требует масштабированного полного экрана, и масштабирование сохраняется после выхода из полноэкранного режима
Так что это хорошо – теперь просто нужно выяснить:
- Как включить/активировать сервер X2Go из командной строки по ssh
- Как указать, что я хочу немасштабированную “выемку” в режиме полного экрана с автоматической прокруткой (через перемещение указателя мыши к верхним/нижним/правым/левым краям экрана).
EDIT: Обнаружил следующее: вышеуказанные примеры были выполнены с (думаю) графическим интерфейсом X2GOClient/Предпочтения сессии/Тип сессии “X2Go/X11 Desktop Sharing”. Мотивированный Клиент x2go для Windows отображает неправильное разрешение,
Я попытался изменить тип сеанса на “MATE” (что является рабочим окружением, которое я использую и на сервере, и на клиенте, и показано на скриншотах выше). С этим окно открывается, которое масштабируется до максимального доступного размера при разрешении рабочего стола клиента, и внутри я получаю рабочий стол клиента, показанный в точном размер пикселей, начиная с верхнего левого края (и верхняя панель масштабируется до размера этого окна) – и так я могу запускать программы и прекрасно видеть, что происходит.
То, что я не могу сказать в данный момент, это является ли это копией рабочего стола, который действительно работает – или это новая сессия для того же пользователя (вероятно новая, pyhoca-cli --list-desktops --server 192.168.0.100
после этого перечисляет две сессии вместо одной); по крайней мере, для некоторых программ, которые я использую, это не имеет значения, так что это решило для меня проблему нечитаемого разрешения (по крайней мере частично на данный момент). Обратите внимание также, что после закрытия соединения X2GoClient GUI – когда вы открываете Предпочтения сессии/Тип сеанса в следующий раз, он (как сказано в связанном посте):
автоматически изменяется на “Пользовательский рабочий стол” с командой “MATE”
Я полагаю, что эквивалентом этого в командной строке является создание новой сессии:
pyhoca-cli --server 192.168.0.100 --username myuser --new --command MATE
… и как только новая сессия создана, после закрытия окна (обратите внимание, что если вы нажмете CTRL+C на pyhoca-cli
, это также закроет окно, и это не удалит сессию, а вместо этого приостановит сессию) и захотите снова подключиться, вам не нужно повторно создавать новую сессию. Сначала подтвердите, что сессия существует, с помощью:
pyhoca-cli --username myuser --list-sessions --server 192.168.0.100
… или, альтернативно, перечислите рабочие столы:
pyhoca-cli --username myuser --list-desktops --server 192.168.0.100
… и тогда вы можете возобновить сессию вместо этого (обратите внимание, что требуется имя сессии, а не имя рабочего стола; но имена сессий OLDEST и NEWEST также могут быть использованы):
pyhoca-cli --username myuser --server 192.168.0.100 --resume NEWEST
… или, скорее, вы могли бы, если бы не было этой ошибки #1445 – pyhoca-cli не может подключиться к приостановленной сессии x2go – Логи отчетов об ошибках X2Go, которая, по всей видимости, исправлена в pyhoca-cli 0.6.1.3, однако мой Ubuntu 20.04 все еще имеет 0.6.1.2.
И, наконец, чтобы разрушить/убить/стереть сессию, используйте --terminate
(которая также принимает ALL):
pyhoca-cli --username myuser --server 192.168.0.100 --terminate ALL
Ответ или решение
X2Go и работа с командной строкой
X2Go – это мощное средство удаленного доступа, позволяющее пользователям подключаться к графическим рабочим столам Linux через протокол SSH. Он часто используется как более эффективная альтернатива VNC благодаря своим возможностям, таким как сжатие данных и поддержка звука. Ниже приводится подробное инструктаж по работе с X2Go на Ubuntu 20.04 с рабочим окружением MATE, включая использование командной строки для управления сервером и клиентом X2Go, а также ответы на ваши специфические вопросы.
1. Активация и деактивация общего доступа к рабочему столу через командную строку
Для управления доступом к рабочему столу на сервере X2Go вы можете использовать утилиту командной строки x2goserver
. Ваша цель – включить или выключить режим совместного доступа к рабочему столу с сервера, который вы контролируете через SSH.
Для активации общего доступа выполните:
sudo service x2goserver start
Для деактивации общего доступа:
sudo service x2goserver stop
Если вам нужно изменить настройки, то вы можете редактировать конфигурационные файлы X2Go. Обычно они находятся в /etc/x2go/x2goserver.conf
. Здесь вы можете указать дополнительные параметры, касающиеся компьютеров-клиентов и уровня доступа.
2. Подключение к X2Go с командной строки
На данный момент доступно несколько способов подключения к X2Go через командную строку. Как вы уже отметили, pyhoca-cli
является отличной альтернативой для работы с сессиями X2Go.
Пример использования pyhoca-cli
:
- Сначала запустите сервер и проверьте доступные десктопы:
pyhoca-cli --server 192.168.0.100 --username myuser --list-desktops
- После получения доступных сессий вы сможете подключиться к одной из них:
pyhoca-cli --server 192.168.0.100 --share-desktop myuser@:0 --user myuser --share-mode 1
3. Режимы отображения: масштабирование и панорамирование
В X2Go отсутствует явная функция изменения режима отображения рабочего стола в виде «cutout» или «осуществления автоматического панорамирования», как вы описывали в VNC. Однако, вы можете управлять размерами окон с помощью параметров сессии.
При создании новой сессии можно задать размер вручную, что поможет вам избежать масштабирования. Запустите следующую команду:
pyhoca-cli --server 192.168.0.100 --username myuser --new --command "MATE" --geometry 800x600
Этот пример создаст новую сессию MATE с разрешением 800×600. Вы можете вариировать разрешение в зависимости от ваших целей.
4. Управление сессиями через pyhoca-cli
Для управления уже существующими сессиями вы должны использовать команду --list-sessions
:
pyhoca-cli --username myuser --server 192.168.0.100 --list-sessions
Затем, чтобы вернуться к существующей сессии, можете использовать:
pyhoca-cli --username myuser --server 192.168.0.100 --resume <session_name>
Для завершения сессии используйте:
pyhoca-cli --username myuser --server 192.168.0.100 --terminate ALL
Выводы
X2Go предлагает множество функций для управления удаленными сессиями на серверах Ubuntu, а возможность работы через командную строку делает его мощным инструментом для системных администраторов. С помощью описанных выше команд вы сможете эффективно активировать общий доступ, управлять сессиями и решать проблемы с отображением. В случае возникновения дополнительных вопросов или необходимости в более детальных инструкциях, вы всегда можете обратиться к документации X2Go или воспользоваться общедоступными ресурсами сообщества.