Прикрепите к потерянной сессии X11

27

Я использую переадресацию X11 sshдля запуска приложений Linux на моем компьютере с Windows, и когда сеть падает, она теряет все, что было запущено. Есть ли что-нибудь похожее screenна X11?

Абдулла Джибали
источник
Прояснить. Почему бы просто не использовать screen? Или XVNC? Вы запускаете screen на компьютере с Linux и, когда ваша сеть отключается, переподключитесь и снова подключитесь screen -DRк сеансу.
nix
@nix Будет ли это работать для приложений X?
Майкл Мрозек
2
@ nix Я не думаю, что screenработает для графических приложений.
Абдулла Джибали
Конечно, экран потребует запуска из xterm.
nix

Ответы:

32

Xpra или вилка Xpra утверждают, что именно это:

Так что в основном это экран для удаленных приложений X.

Я не использовал его некоторое время, но он работал довольно хорошо, когда я попробовал это. Вы запускаете сервер на удаленной машине:

[remote] $ xpra start :13

Затем вы подключаетесь к серверу с вашего локального компьютера:

[local] $ xpra attach ssh:remote:13

И теперь все, что отображается на дисплее X 13 на удаленном компьютере, будет отображаться локально:

[remote] $ DISPLAY=:13 xeyes
Михаил Мрозек
источник
4
Есть также WinSwitch , который на первый взгляд выглядит так, как будто он интегрирует xpra и другое связанное программное обеспечение.
Жиль "ТАК - перестать быть злым"
6

Вы ищете VNC . Принцип несколько похож на экран: вы запускаете сервер VNC (фоновый SCREENпроцесс) и клиент VNC ( screenпроцесс переднего плана ). VNC-сервер является X-сервером, поэтому на нем можно запускать X-приложения.

Запустите сервер VNC на компьютере с Linux и клиент на компьютере с Windows. У вас есть несколько реализаций на выбор; одна возможность - TightVNC . TightVNC есть во многих дистрибутивах Linux (если его нет в вашем, либо установите его, либо выберите другую реализацию), и есть клиент для Windows.

Если ваши две машины не очень близки к сети - если между ними есть брандмауэр или существует угроза перехвата - вам нужно туннелировать трафик VNC через ssh. Пусть ssh перенаправит локальный порт 5900 на удаленный порт 5900 (5900 соответствует дисплею :0, используйте 5901 для :1и т. Д.).

Жиль "ТАК - перестань быть злым"
источник
4

На самом деле, вы можете переслать X в screen. Единственное , что нужно сделать , это настроить $DISPLAYв screenокне , так что это одно и то же из стороны от него.

Процедура

после того, как ssh -Xв удаленный компьютер, введите

$ echo $DISPLAY

и обычно копируют результат localhost:N.0. Затем введите screenв локальном screenокне

$ export DISPLAY=localhost:N.0

После этого запустите любую Xнеобходимую программу в окне экрана.

ПРИМЕЧАНИЕ: для каждого screenокна переменные среды независимы. Так что для каждого окна вам может потребоваться настроить его отдельно.

Ссылки

Chong
источник
1
Привет Чонг, добро пожаловать в unix.SE. Поскольку детали решения, на которое вы ссылаетесь, просты, лучше переписать их здесь явно. Таким образом, ответ сохраняется, если что-то случится с постом на askubuntu.com. Конечно, это хорошая идея, чтобы сохранить ссылку также, потому что это помогает получить ваш материал.
DRS
2
Я попробовал это решение, но я не могу закрыть сеанс ssh, не убив работающее приложение X. Это как-то противоречит цели ... Как мне отключиться от удаленного хоста, оставив удаленное приложение работающим?
Тонин