Executando aplicações gráficas remotamente

Índice de Conteúdo

Método 1: X11 Forwarding via SSH
1.1. Configuração do servidor SSH
1.2. Executando as aplicações
Método 2: Conexão X11 direta
2.1. Configuração do Cliente – DisplayManager
2.2. Configuração do Cliente – Permissão
2.3. Configuração do Cliente – Firewall
2.4. Executando a aplicação
Método 3: Utilizando o Windows como cliente
3.1. Xming X Server
3.2. PuTTY + X11 Forwarding
3.3. PuTTY + Conexão X11 Direta

Muitas instalações de servidores Linux têm como um requisito não instalar o ambiente gráfico e seus programas. Isso é bem plausível pelo fato de que quando você faz isso, você economiza no tamanho do banco de dados dos pacotes, no espaço em disco, na gerência e atualizações destes pacotes, entre outros. E em um servidor, não ter uma interface gráfica não é tão problemático, pois geralmente ninguém fica na frente da tela utilizando a máquina.

Mas e se por acaso você quiser utilizar algum programa que só funciona através de uma interface gráfica neste servidor? Isto é o que acontece em alguns programas como por exemplo o banco de dados Oracle que possui uma interface gráfica de instalação. Se o servidor não possui uma interface gráfica, então como instalar isso? Ou como utilizar esses programas?

No Linux, o ambiente gráfico (X11/Xorg) possui a capacidade de executar aplicações gráficas remotamente. Isto quer dizer que eu posso executar algo em uma máquina e as telas do programa podem aparecer em outra máquina. No nosso caso isso seria muito útil, não? Se no meu servidor não existir uma interface gráfica, eu posso utilizar a interface gráfica do meu desktop cliente!

Neste tutorial, vamos supor que tenhamos um servidor Linux que só é acessado via SSH e temos um cliente que também é Linux. Também temos como IPs:

IP do Servidor: 192.168.0.1
IP do Cliente: 192.168.0.2

Método 1: X11 Forwarding via SSH

O SSH possui uma opção que cria um túnel e manda todas as conexões gráficas diretamente por uma sessão encriptada em SSH.
1.1. Configuração do servidor SSH

Para que os programas tenham seus pacotes enviados remotamente, o SSH precisa estar configurado para aceitar isso. A maioria das distribuições já deixam esta configuração feita, mas por via das dúvidas, logue-se via SSH no servidor como root, edite o arquivo /etc/ssh/sshd_config e procure pela linha:

X11Forwarding yes

Certifique-se de que esta opção esteja como “yes” (sim). Se estiver como não ou comentada, deixe como a linha acima. Feito isto, reinicie o serviço de SSH com o seguinte comando:

/etc/init.d/sshd restart

(Nota: Este comando acima pode mudar de distribuição para distribuição, apesar da maioria aceitá-lo. Se for o caso de não funcionar com voce, mude de acordo com a sua distribuição)
1.2. Executando as aplicações

Com a configuração do servidor SSH feita, basta apenas você executar a aplicação remotamente via um comando de ssh. Logue-se em um ambiente gráfico da máquina cliente e em um terminal utilize o comando:

$ ssh -X -C usuario@192.168.0.1

Onde usuario é o nome do usuário no servidor e o IP 192.168.0.1 corresponde ao IP do servidor. Com este comando você entrará na máquina servidor via SSH e todo comando gráfico que você executar estará sendo enviado via túnel SSH para a máquina cliente:

./aplicacao

Outra forma de executar aplicações remotamente é através do próprio servidor X que oferece este tipo de suporte, com o transporte das telas das aplicações via conexões TCP na porta 6000.
2.1. Configuração do Cliente – DisplayManager

Por padrão em muitas distribuições, o servidor X vem desabilitado para acesso remoto (por questões óbvias de segurança). Então a primeira coisa que você deverá fazer é habilitar esse acesso via TCP ao servidor X. Para saber se o seu servidor está aceitando conexões TCP ou não, use o comando ps:

$ ps ax | grep X
2402 tty7     RLs+  11:28 /usr/bin/X :0 -br -audit 0 -auth /var/gdm/:0.Xauth -nolisten tcp vt7

No meu exemplo acima, o treco -nolisten tcp me diz que o servidor não está aceitando conexões TCP. Se esta sua linha não tiver o parâmetro -nolisten, então provavelmente as conexões já estão liberadas.

Se o seu estiver como no exemplo, você terá que mudar a configuração para que as conexões sejam aceitas. Isto vai depender um pouco de qual distribuição e/ou ambiente gráfico você utiliza.

No caso de utilizar o GDM (do projeto GNOME), edite o arquivo /etc/X11/gdm/gdm.conf (ou /etc/gdm.conf), procure a seção [Security] e configure a linha:

DisallowTCP=false

Esta linha acima provavelmente estará com o valor true, então mude para false para ele permitir as conexões TCP. Em seguida reinicie o servidor X (pode ser deslogando-se ou apertando CTRL+ALT+BACKSPACE).

No caso de utilizar o KDM (do projeto KDE), edite o arquivo /etc/kde/kdm/kdmrc (ou o kdmrc em outro lugar), procure pela seguinte linha:

ServerArgsLocal=-nolisten tcp

Achando esta linha, comente-a para que o -nolisten tcp não seja executado com o servidor X. Em seguida reinicie o servidor X (pode ser deslogando-se ou apertando CTRL+ALT+BACKSPACE).

2.2. Configuração do Cliente – Permissão

Com o cliente aceitando conexões gráficas via TCP, falta agora permitir que o servidor possa conectar. Para fazer isso podemos usar o comando xhost. Então no cliente, já logado na interface gráfica com um usuário qualquer, use o comando da seguinte forma:

# xhost +192.168.0.1

No exemplo acima eu permiti que o servidor (IP 192.168.0.1) pudesse fazer conexões gráficas na sessão X do meu cliente. Lembrando que esta configuração se perde caso você se deslogue.

2.3. Configuração do Cliente – Firewall

Uma nota bastante importante: verifique se o cliente não está bloqueando o acesso do servidor via firewall. Se um firewall estiver ativo no cliente, certifique-se de que ele aceita conexões vindas do IP do servidor, ou conexões na porta 6000.

2.4. Executando a aplicação

Agora com tudo (ou quase tudo) configurado, é hora de executar a aplicação no servidor e esperar aparecer a janelinha no cliente. Logue-se via ssh no servidor e primeiro digite:

$ export DISPLAY=192.168.0.2:0

Onde o 192.168.0.2 é o IP do cliente onde está a interface gráfica. Esta variável de ambiente DISPLAY é quem diz aos programas gráficos onde jogar suas telas gráficas. Nesse caso, estamos dizendo para jogar na outra máquina.

Nota: O “:0″ depois do IP significa o “display” do servidor remoto. Na maioria dos casos só há uma tela gráfica nas máquinas e o 0 sempre vai funcionar, mas como o servidor X também suporta vários ambientes gráficos rodando na mesma máquina, este número pode aumentar pra 1, 2, 3… dependendo de qual tela é. Na dúvida, use o 0. Se não funcionar, veja em que display executar vendo no comando ps apresentado mais acima.

Configurada a variável, basta apenas executar a aplicação:

./aplicacao

Com isso as telas da aplicação (e só elas) deverão aparecer no cliente!

Método 3: Utilizando o Windows como cliente

Vamos supor agora que você, triste e chorando, não tenha um cliente Linux com um ambiente gráfico. Nesse caso, infelizmente você apenas possui uma máquina com Windows. O que fazer?

Calma, pra tudo há uma solução! Para resolver este problema, você precisará de duas aplicações instaladas em seu Windows:

Xming X Server for Windows – http://sourceforge.net/projects/xming
PuTTY – http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

O Xming é um servidor X livre que vai funcionar como o Xorg no Linux e o PuTTY é o cliente SSH para você acessar o servidor. Antes de começar o processo, estou supondo aqui que você leu as partes anteriores e sabe mais ou menos como funciona o processo de execução remota.

3.1. Xming X Server

Instalando e executando o Xming X Server, um ícone aparecerá no systray. Enquanto este ícone estiver lá, um servidor X estará funcionando localmente no display 0 (localhost:0), exatamente igual à um Linux. Isto vai permitir que você execute aplicações dentro da interface do Windows.

3.2. PuTTY + X11 Forwarding

Para utilizar o mesmo processo de X11 Forwarding, uma vez baixado o PuTTY, execute-o e configure-o primeiro na seção Connection -> SSH -> X11, habilitando a opção X11 Forwarding.

Feito isto, conecte normalmente a sessão SSH ao servidor e toda aplicação gráfica executada irá mandar as telas via o túnel encriptado SSH.
3.3. PuTTY + Conexão X11 Direta

Como o servidor Xming já está configurado para receber as conexões diretas X11, basta apenas você acessar o servidor via SSH com o programa PuTTY e fazer o mesmo que o passo 2.4.
– See more at: http://www.devin.com.br/aplicacoes-graficas-remotas/#sthash.prHqwLrF.dpuf

Deixe um comentário