SSH: inicie programas GUI na tela remota, não exiba X

9

O problema

A maioria das pessoas deseja se conectar a um servidor por meio do ssh com a opção "-X" para executar programas GUI no host remoto usando a exibição do cliente. Eu gostaria de executar programas GUI no monitor físico conectado ao servidor. Isso é possível ? Deixe-me ser mais específico:

Minha situação é a seguinte: Eu tenho uma estação de trabalho sem um teclado ou mouse, mas tem um monitor conectado a ela. Eu gostaria de SSH para ele com o meu laptop e ser capaz de lançar algum programa gráfico, como xeyes ou ssvnc e tê-lo aparecer no monitor da estação de trabalho.

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

Editar: informação extra

Eu devo explicar algumas coisas mais claramente:

  • Eu tenho acesso sudo na estação de trabalho, posso instalar qualquer coisa, se necessário.
  • A estação de trabalho está executando a interface do usuário do GNOME.
  • Antes de desconectar o teclado e o mouse da estação de trabalho, eu entrei em uma sessão do GNOME. Pode-se, portanto, ver minha área de trabalho GNOME no monitor da estação de trabalho atualmente.
  • Não desejo executar programas do meu laptop na estação de trabalho. Eu gostaria de executar programas de estação de trabalho na estação de trabalho. O xeyes ou qualquer executável é encontrado no servidor remoto e deve ser executado no monitor do servidor remoto
  • Entendo que a execução disso me deixará em uma situação em que meu cursor não estará conectado à interface. Eu não consigo clicar nas coisas. Tudo bem.

Qualquer ajuda muito apreciada!

    
por xApple 27.09.2011 / 09:44

2 respostas

5

qualquer aplicativo xlib deve se conectar a um xserver. você precisa dizer ao aplicativo a conexão com o servidor:

  • definindo a variável de ambiente DISPLAY
  • usando um sinalizador de linha de comando, como -display

o primeiro xserver geralmente pode ser alcançado pela string de conexão ': 0'. então, tente isto:

xeyes -display :0

ou isto

env DISPLAY=:0 xeyes
    
por 27.09.2011 / 09:51
5

Esta estação de trabalho está executando um servidor X Windows? Sem isso, tudo isso é discutível.

Você precisa de ALGUMA COISA para processar os dados em gráficos, pixels, cores e locais. Um 'monitor' é inútil sem algum tipo de software para executá-lo.

Supondo que seja. (mas a partir do texto, com certeza soa diferente)

Dados os nomes de host (e resolução de DNS apropriada através de / etc / hosts ou DNS ou qualquer outro) de 'workstation' e 'laptop' ... se não, substitua os nomes de host da máquina pelos endereços IP apropriados.

ssh workstation
xhost +laptop

você pode sair da estação de trabalho neste ponto, pois isso define as permissões no Xserver da estação de trabalho para permitir que o 'laptop' se conecte.

Se você iniciar seus programas com o DISPLAY ENV var configurado adequadamente, poderá fazer com que os aplicativos sejam exibidos na estação de trabalho, enquanto estiver sendo executado em seu laptop.

DISPLAY=workstation:0 xeyes

-ou -

export DISPLAY=workstation:0
xeyes

qualquer um dos métodos funcionará, o último faz com que tudo relacionado ao X11 seja exibido na estação de trabalho quando iniciado a partir desse shell. (espero que fizesse sentido)

A linha 'xhost' é permitir permissão para o laptop se conectar ao Xserver da estação de trabalho. Sem ele, você terá a permissão negada, a menos que você inicie o servidor X com permissões NO, o que não é realmente recomendado. A proteção 'xhost' ainda é fraca, já que os dados são enviados em 'texto simples' entre o laptop e a estação de trabalho e podem ser detectados, mas é uma solução fácil.

Se você quisesse privacidade, precisaria configurar algum tipo de túnel criptografado entre seu laptop e a estação de trabalho (porta 6000 para exibição: 0). Sim, fica estranho neste momento.

Se você estiver em um ambiente controlado, usar o comando 'xhost + laptop' será suficiente; se você sair da parte 'laptop' desse comando 'xhost +', QUALQUER UM poderá se conectar ao Xserver e exibir as coisas.

Lembre-se, seu mouse NÃO está 'conectado' ao Xserver da estação de trabalho e você NÃO poderá manipular janelas ou clicar em coisas.

Se você deseja que o mouse seja conectado, recomendo algo como x2x, synergy, vnc ou um aplicativo de compartilhamento de tela baseado no X Windows.

    
por 27.09.2011 / 10:07