O problema
A maioria das pessoas deseja se conectar a um servidor via ssh com a opção "-X" para executar programas da GUI no host remoto usando a exibição do cliente. Eu gostaria de executar programas da GUI no monitor físico conectado ao servidor. Isso é possível ? Deixe-me ser mais específico:
Minha situação é a seguinte: Tenho uma estação de trabalho sem teclado ou mouse, mas possui um monitor conectado a ela. Gostaria de fazer o SSH com o meu laptop e poder iniciar algum programa gráfico, como xeyes ou ssvnc, e fazer com que ele apareça 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ções extras
Talvez eu devesse explicar algumas coisas mais claramente:
- Tenho acesso ao 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 GNOME.
- Antes de desconectar o teclado e o mouse da estação de trabalho, entrei em uma sessão do GNOME. Podemos 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. Os xeyes ou qualquer executável é encontrado no servidor remoto e deve ser executado no monitor do servidor remoto
- Entendo que realizar isso me deixará em uma situação em que meu cursor não será conectado à interface. Não consigo clicar nas coisas. Isso está ok.
Qualquer ajuda muito apreciada!
xhost +
no seu servidor?Respostas:
qualquer aplicativo xlib deve se conectar a um xserver. você precisa informar ao aplicativo a conexão com o servidor:
-display
o primeiro xserver geralmente pode ser alcançado pela cadeia de conexão ': 0'. então, tente o seguinte:
ou isto
fonte
XAUTHORITY
também serão necessárias, pois o servidor X11 usará um arquivo Xauthority temporário.Esta estação de trabalho está executando um servidor X Windows? Sem isso, tudo isso é discutível.
Você precisa de ALGO 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 o contrário)
Dados os nomes de host (e a resolução DNS apropriada por meio de / etc / hosts ou DNS ou o que for) de 'estação de trabalho' e 'laptop' ... se não, substitua os nomes de host da máquina por endereços IP apropriados.
você pode sair da estação de trabalho nesse momento, pois isso define as permissões no Xserver da estação de trabalho para permitir a conexão do 'laptop'.
se você iniciar seus programas com o conjunto de variáveis DISPLAY adequado, poderá fazer com que os aplicativos sejam exibidos na estação de trabalho enquanto estiver executando no seu laptop.
-ou-
qualquer um dos métodos funcionará, o último fará com que qualquer coisa relacionada ao X11 seja exibida na estação de trabalho quando iniciada a partir desse shell. (espero que isso faça sentido)
A linha 'xhost' é permitir permissão para o laptop se conectar ao Xserver da estação de trabalho. Sem ele, você terá permissão negada, a menos que inicie o servidor X sem permissões, o que não é realmente recomendado. A proteção do 'xhost' ainda é esfarrapada, pois os dados são enviados em 'texto sem formatação' entre o laptop e a estação de trabalho e podem ser detectados, mas é uma solução fácil.
Se você deseja privacidade, precisará configurar algum tipo de túnel criptografado entre o 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, o uso do comando 'xhost + laptop' será suficiente; se você deixar a parte 'laptop' desse comando 'xhost +', QUALQUER PESSOA poderá se conectar ao Xserver e exibir as coisas.
Lembre-se de que o mouse NÃO está 'conectado' à estação de trabalho Xserver e você NÃO poderá manipular janelas ou clicar nas 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.
fonte