DestaqueGuias

X11 Forwarding: Acesso a aplicações *nix em todo o lado

Introdução

No mundo *nix é possível ter-se bastante flexibilidade em todos os sentidos. Falando especificamente no mundo Linux, o único ponto em comum entre dois sistemas operativos é o kernel e mesmo esse pode ser muito alterado.

Um dos pontos onde se tem bastante flexibilidade é o acesso remoto a uma máquina.
É mais que conhecido o acesso remoto por ssh a um terminal remoto que é considerado seguro e rápido. Mas não tão conhecido é que esse mesmo acesso ssh pode ser utilizador para aceder a aplicações gráficas do sistema remoto.
É sobre esse acesso remoto a aplicações gráficas que este artigo se vai debruçar.

Uma das funcionalidades do servidor gráfico X11 que é utilizado em Linux e outros *nix é que é possível aceder a ele remotamente. Usando ssh, podemos aceder de uma forma segura.

O acesso a uma máquina remota pode ser feita a partir de outros *nix ou de sistema operativos onde seja possível correr um X Server, como é o caso de Windows.

Para uma pequena demonstração disso mesmo, fica aqui um video onde mostro que a partir de um Windows, posso abrir aplicações de um Linux remoto, neste caso o Gimp e o Firefox:

Este acesso remoto é mais uma forma de aceder ao mundo *nix, em que podemos ter uma máquina que só acedemos remotamente para executar aplicações gráficas desse mesmo mundo.

Para este artigo, criei três máquinas distintas, mas com conectividade de rede entre elas.

A primeira é um Xubuntu com o ambiente gráfico Xfce, que será a máquina de destino, onde nos vamos ligar a ela para arrancar e correr as aplicações.

A segunda máquina é outro Linux, neste caso um Fedora, mas com um ambiente gráfico diferente do ambiente gráfico do Xubuntu, para demonstrar que se podem misturar diferentes ambientes gráficos entre a origem e destino. Esse ambiente gráfico é o Lxde e vou usar esta máquina para aceder remotamente ao Xubuntu e de lá executar as aplicações gráficas.

A terceira máquina é algo completamente diferente. Um Windows XP, que com algum software, podemos aproveitar o mesmo acesso remoto para correr aplicações gráficas na máquina Xubuntu.

Por fim, salientar que este acesso remoto só redirecciona imagem e não som e que convém ter uma ligação de rede razoável entre as duas máquinas, por uma questão de performance.

Máquina de destino

Na máquina de destino, que será sempre um *nix que corra X11, só é preciso termos uma forma de lhe acedermos por ssh.
Para tal, vamos instalar o servidor de Openssh via:

sudo apt-get install openssh-server

O gestor de pacotes resolve as dependências e é-nos perguntado se queremos confirmar a sua instalação.

É instalado o servidor de openssh, o seu serviço que fica à escuta na porta 22 e criadas as chaves de autenticação.

Em seguida é necessário abrir o ficheiro de configuração do servidor de openssh para verificarmos se ele permite forward de X11.
Para tal, abrimos com o editor de texto:

sudo leafpad /etc/ssh/sshd_config

Dentro do ficheiro de configuração, devemos procurar um parâmetro com o nome de “X11Forwarding” e verificar se está a “Yes”. Se estiver a “No”, devemos editar e passar para “Yes”.

Caso tenhamos feito modificações a este ficheiro, é preciso efectuar um restart ao serviço de openssh via:

sudo service sshd restart

Depois disto, temos a máquina disponível para aceder remotamente a aplicações gráficas.

Aceder a partir de outro *nix

A partir de outra máquina com *nix, neste caso um Fedora com Lxde, só precisamos de ter um terminal e o cliente de ssh instalado, algo que quase todas as distribuições têm.

Acedemos então à consola e ligamo-nos à máquina remota por ssh, com o parâmetro “-X”, para indicar que queremos a funcionalidade de “X Forwarding” ligada.

ssh -X [email protected]

Num primeiro acesso é pedido para aceitarmos a chave de autenticação da máquina remota.

Depois de acedermos, podemos confirmar que temos acesso ao X11, pedindo o valor da variável DISPLAY, com o comando:

echo $DISPLAY

Deveremos ter como resultado algo como “localhost:10.0”.

Outra forma de acedermos com “X11 Forwarding” ligado, é com o parâmetro “-Y” a partir do cliente em vez do “-X”.
As diferenças é que “-Y” é mais rápido, mas menos seguro.

Outra forma de se aceder é adicionando o parâmetro “-C”, para termos compressão ligado na comunicação por ssh.

Agora podemos começar a usar a máquina de destino. Neste primeiro exemplo, vou abrir o terminal de Xfce da máquina remota, apesar de estar noutra máquina que só tem o Lxde.

Para tal, corro o comando:

xfce4-terminal

E aqui tenho o terminal usado em Xfce, que está a correr na máquina remota, mas que a estou a ver de um Fedora com Lxde.

Posso em seguida, abrir o Firefox da máquina remota. Basta correr o comando:

firefox

E aqui temos, o Firefox 15.0.1, a correr num Xubuntu, mas em que está a ser visualizado a partir de uma máquina remota com Fedora e Lxde.

No entanto, uma das coisas que vão verificar, é que enquanto estiverem com a aplicação remota aberta, não podem fazer nada no terminal, por exemplo para lançar outra aplicação remota ao mesmo tempo.

Uma das formas para evitar isso, é usando o “&” no fim do comando, fazendo com que ele lance a aplicação e salte para a linha seguinte.

firefox &

Aqui podemos ver o Firefox a correr remotamente e ainda temos completo acesso à linha de comandos, por ter utilizado o “&”.

Apesar disso, esta não é uma solução perfeita, porque qualquer tipo de mensagem que a aplicação lance, vai parar ao terminal, fazendo com que, com muitas aplicações ou com aplicações menos bem comportadas, a linha de comandos se torne uma enorme listagem de mensagens sem sentido.

Para evitar isso, podemos lançar cada uma das aplicações num terminal virtual, que não seja visível.
Podemos instalar por exemplo, o “dtach” na máquina remota. O dtach é uma aplicação muito pequena, que só serve para criar terminais virtuais.

Para instalar, basta aceder ao Xubuntu e correr o comando:

sudo apt-get install dtach

Para executarmos o Firefox num terminal virtual, que não o vejamos mais, basta correr o comando:

dtach -c /tmp/firefox firefox

É lançado o Firefox num terminal virtual, como podemos ver nesta imagem.

Para saímos do terminal virtual, basta carregar em duas teclas ao mesmo tempo, “CTRL + |”.

Se por algum motivo, quisermos aceder novamente ao terminal virtual onde foi lançado o Firefox, basta correr o comando:

dtach -a /tmp/firefox

Aqui fica uma imagem com várias aplicações remotas abertas ao mesmo tempo. Neste caso, o task manager, o Firefox e o Notes, todas elas a correrem no Xubuntu remoto e a serem visualisadas num Fedora com Lxde.

1 2Página seguinte

Artigos Relacionados

Botão Voltar ao Topo