Reconecte à sessão X11 perdida

27

Estou usando o encaminhamento do X11 sshpara executar aplicativos Linux na minha caixa do Windows e, quando a rede cai, perde tudo o que estava em execução. Existe algo parecido com o screenX11?

Abdullah Jibaly
fonte
Esclarecer. Por que não usar apenas screen? Ou XVNC? Você executa a tela na máquina Linux e, quando sua rede cair, reconecte e use screen -DRpara anexar novamente a sessão.
Nix
@nix Isso funcionará para aplicativos X?
Michael Mrozek
2
@ Nix Eu não acho que screenfunciona para aplicativos GUI.
Abdullah Jibaly 04/04
Obviamente, a tela exigiria a execução de um xterm.
Nix

Respostas:

32

Xpra ou o garfo Xpra afirmam ser exatamente isso:

Então, basicamente, é a tela para aplicativos X remotos.

Não uso há algum tempo, mas funcionou muito bem quando tentei. Você inicia o servidor na máquina remota:

[remote] $ xpra start :13

Em seguida, você se conecta ao servidor da sua máquina local:

[local] $ xpra attach ssh:remote:13

E agora qualquer coisa exibida no display 13 do X na máquina remota aparecerá localmente:

[remote] $ DISPLAY=:13 xeyes
Michael Mrozek
fonte
4
Há também o WinSwitch , que, à primeira vista, parece integrar o xpra e outros softwares relacionados.
Gilles 'SO- stop be evil'
6

Você está procurando por VNC . O princípio é semelhante à tela: você executa um servidor VNC (o SCREENprocesso de backgound ) e um cliente VNC (o screenprocesso de primeiro plano ). O servidor VNC é um servidor X, para que você possa executar aplicativos X nele.

Execute um servidor VNC na caixa Linux e um cliente na caixa Windows. Você tem várias implementações para escolher; uma possibilidade é o TightVNC . O TightVNC está em muitas distribuições Linux (se não estiver na sua, instale-o ou escolha uma implementação diferente), e há um cliente Windows.

Se suas duas máquinas não estiverem muito próximas da rede - se houver um firewall ou um risco de interceptação entre elas - você precisará encapsular o tráfego do VNC através do ssh. Faça com que o ssh encaminhe a porta local 5900 para a porta remota 5900 (5900 corresponde ao visor :0, use 5901 para :1, etc.).

Gilles 'SO- parar de ser mau'
fonte
4

Na verdade, você pode encaminhar o X para screen. A única coisa a fazer é instalar o $DISPLAYna screenjanela para que fique do mesmo lado externo.

Procedimento

depois ssh -Xna máquina remota, digite

$ echo $DISPLAY

e copie o resultado, geralmente localhost:N.0. Em seguida screen, digite , na screenjanela local ,

$ export DISPLAY=localhost:N.0

Depois disso, execute qualquer Xprograma necessário dentro da janela da tela.

NOTA: para cada screenjanela, as variáveis ​​de ambiente são independentes. Portanto, para cada janela, pode ser necessário configurá-lo separadamente.

Referências

Chong
fonte
11
Olá Chong, bem-vindo ao unix.SE. Como os detalhes da solução que você vincula são simples, é melhor reescrevê-los explicitamente aqui. Dessa forma, a resposta é preservada caso algo aconteça com a publicação no askubuntu.com. Obviamente, é uma boa ideia manter o link presente também, pois ajuda a obter seu material.
drs
2
Tentei esta solução, mas não consigo fechar minha sessão ssh sem matar o aplicativo X em execução. Isso de alguma forma anula o objetivo dele ... Como devo me desconectar do host remoto deixando o aplicativo remoto em execução?
Tonin