Executa o aplicativo na máquina local e mostra a GUI no display remoto

33

É possível executar um aplicativo na minha área de trabalho local, mas exibir a GUI no meu laptop (X remoto)?

Eu estou querendo saber se é possível emular uma configuração de monitor duplo usando duas máquinas distintas conectadas à rede local.

Instalei sinergia e posso controlar facilmente meu laptop com o teclado / mouse da área de trabalho, mas também gostaria de simplesmente executar algo na área de trabalho e exibir a GUI na tela do laptop.

De minha experiência limitada com X, sei que posso executar um programa em uma máquina remota e usar a exibição da primeira para mostrar a saída, mas não o contrário.

Todos os ponteiros seriam de grande ajuda. Obrigado

P.S. Rodando o XFCE 4.10 no Ubuntu 12.10

    
por Vlad Balmos 19.10.2012 / 21:44

6 respostas

35

Variante A - Disparando X Windows para outro DISPLAY:

  1. Veja que o Xserver no seu laptop inicia a escuta das conexões tcp. Infelizmente, o X11-Networking está desabilitado por padrão na maioria das distribuições. Como o Xserver é iniciado pelo seu gerenciador de exibição (gdm, lightdm), isso precisa ser configurado lá:

    Qualquer gerenciador de exibição que você use, algum arquivo de configuração em / etc / provavelmente conterá o parâmetro XServer responsável. Execute grep -r 'nolisten tcp' /etc/ no seu Laptop para descobrir qual arquivo de configuração é responsável e remova a parte que diz -nolisten tcp (não a linha inteira, apenas este parâmetro). Reinicie o X no seu laptop.

    Seu laptop agora deve ter um monitor rodando na porta tcp 6000 (tente rodar nmap -p6000 Laptop no seu PC desktop, se a porta reportada como "aberta", você chegou até aqui).

  2. Disponibilize seu X-display para o computador desktop. O X11 usa um mecanismo de autenticação para conceder acesso a uma exibição. Você tem que permitir que o PC desktop lance o Windows no Laptop. Normalmente, trocando um cookie de exibição.

    Para começar, execute este passo com as mãos no seu notebook. Depois de obter o conceito com a variável DISPLAY e tudo mais, você pode fazer isso via ssh.

    Rápido e sujo: você pode executar xhost +desktops.computers.ip.address em seu laptop para conceder acesso X ao computador desktop. Observe que todos os usuários em seu computador de laptops podem usar seus laptops X como estão. Note que isto é suficiente, por exemplo, para instalar um keylogger no seu monitor de portáteis. Use este método apenas para testes.

    Correto e seguro: execute xauth extract cookie-file :0 em seu laptop para exportar seu segredo de acesso a exibição para "cookie-file". Transfira o cookie para a sua máquina desktop. Execute xauth merge cookie-file . Ou em uma pequena etapa (da sua área de trabalho) ssh Laptop xauth extract - :0 |xauth merge - Observação: se o seu laptop e desktop estiverem compartilhando um diretório inicial, por meio do nfs, não será necessário trocar nenhuma credencial. O banco de dados de credenciais é o arquivo .Xauthority em seu diretório inicial e pode ser compartilhado entre máquinas diferentes.

  3. Execute o programa: Em um terminal no PC de mesa, execute export DISPLAY=Your.Laptops.IP.Address:0 e execute qualquer programa X no mesmo terminal. Ele deve aparecer na tela do notebook.

Variante B - Usando o SSH com uma torção.

O SSH realiza o encaminhamento do X11 encaminhando um soquete X11 local (normalmente um Soquete de Domínio Unix) para um soquete TCP local na máquina remota, negociando o cookie de exibição e configurando o DISPLAY-Environment na máquina remota. Desta forma, todo o tráfego X11 é criptografado através do túnel ssh. O caso de uso normal é encaminhar a exibição local para a máquina remota (ou seja, permitir que aplicativos remotos exibam x janelas localmente).

A vantagem de usar o ssh é que você não precisa colocar o seu X-Server no modo tcp listen (já que o socket unix é usado). E o ssh lida com a troca de credenciais.

  1. SSH para o seu laptop a partir do seu computador desktop (você não precisa usar -X ainda).
  2. No shell remoto, insira export DISPLAY=:0 , isso torna a exibição já em execução no seu notebook disponível para o shell que você obteve via ssh. Se você executar qualquer comando X agora, ele já aparecerá na tela do seu notebook, mas ainda será executado em seu laptop (experimente estar seguro).
  3. A partir desse shell ssh de volta ao seu computador de mesa, use -X desta vez. Agora você tem um shell na máquina na qual a sessão ssh foi originada, mas desta vez com o X. Execute xeyes ou xcalc para testá-lo.
  4. echo $DISPLAY mostra a designação, os laptops que o seu monitor X tem agora no seu computador desktop. Ou seja : 10 ou: 11.
  5. Você pode minimizar o terminal agora. Toda vez que você digitar export DISPLAY=:10 (veja o número de exibição que você tem) no seu computador agora, cada programa que você executa depois no mesmo shell aparecerá na tela do seu notebook.

    Esta variante é fácil, mas lenta, já que todo o tráfego X11 é encaminhado via SSH.

Variante C - O conceito original de thinclient:

Você pode usar seu laptop para abrir uma sessão de área de trabalho sendo executada inteiramente em seu computador desktop.

  1. Configure o gerenciador de exibição em sua área de trabalho para responder às transmissões XDMCP. Como fazer isso depende do seu gerenciador de exibição. Alguns gerentes de exibição não suportam isso, ou seja, slim. XDM, KDM, WDM e GDM suportam isso.

  2. Inicie um X-Server no seu laptop, que solicita o gerenciador de exibição da sua área de trabalho. X aninhado: Xephyr :1 -query desktop ou Xephyr :1 -broadcast Ou desligando o seu X-Server Notebooks e entrando em um Terminal do Sistema sudo Xorg :0 -broadcast

    O gerenciador de exibição fará com que credenciais sejam geradas e trocadas e tudo mais. Parabéns, agora você deve ver uma janela de login fornecida pelo seu computador.

por Paul Hänsch 27.10.2012 / 16:44
19

Você pode usar o encaminhamento do ssh X para atingir seu objetivo. Se você está na mesma sub-rede do que é sair rápido.

Instale o servidor e o cliente ssh no seu laptop e desktop

sudo apt-get install ssh

Para se conectar ao PC de mesa, abra um terminal no laptop e digite o seguinte

ssh -X [email protected]_pc_ip

E você pode iniciar qualquer software usando o terminal, por exemplo, iniciando o Firefox, apenas digite firefox no terminal.

    
por OHLÁLÁ 22.10.2012 / 08:16
7

Preparação

(você faz isso apenas uma vez)

Na sua área de trabalho, instale o servidor SSH

% bl0ck_qu0te%

Do seu laptop:

% bl0ck_qu0te%

No terminal, você obtém o que quer que esteja executando em sua área de trabalho, mas exibido em seu laptop. Se você quiser fazer o mesmo enquanto está sentado em sua mesa (e enviar janelas em seu laptop), vá em frente.

No seu terminal você corre

% bl0ck_qu0te%

Isso mostrará algo como:

localhost:10.0

Na sua área de trabalho:

Abra um terminal e execute

DISPLAY=:10.0 firefox

Isso deve enviar uma janela firefox em seu laptop, mas em sua área de trabalho. Verifique se o número que você colocou (por exemplo, 10.0 ) é o mesmo que no echo result

    
por Nick Andrik 27.10.2012 / 20:14
3

Você está usando uma combinação de SSH e tela para obter a situação desejada.

Na sua área de trabalho, instale a tela:

sudo apt-get install screen

A partir daí, inicie uma nova sessão de tela:

screen

e abra o firefox:

firefox

Use o firefox na sua área de trabalho e, em seguida, o ssh no seu computador a partir do seu laptop:

ssh -X [email protected]

Digite o seguinte comando para ver quais sessões de tela você está executando:

screen -ls

Faça o login na sua sessão de tela (1234 seria a tela numérica -ls deu a você)

screen -x 1234

Você pode usar o Firefox no seu laptop e fechar o terminal na sua área de trabalho.

    
por user530873 23.10.2012 / 20:09
3

O Virtualgl criará uma área de trabalho extra (plano de fundo) (Estilo TightVNC) que você pode acessar através de um cliente turbo VNC . Ele funcionará como um negócio de tipo de área de trabalho remota - > Mas vai reproduzir um vídeo suave através de uma rede.

Se você procura uma maneira de descarregar a sobrecarga da CPU para uma conexão remota, para poder executar aplicativos do seu computador em seu laptop, isso seria o que eu faria.

link

Você também pode exportar o ambiente de desktop através do SSH como / dude acima mencionado.

    
por TardisGuy 24.10.2012 / 04:08
1

Depois de mais algumas pesquisas on-line, deparei com o DMX

Da página inicial

% bl0ck_qu0te%     
por Vlad Balmos 24.10.2012 / 14:21