quinta-feira, 26 de agosto de 2010

Execução de aplicações gráficas remotas pelo redirecionamento do X11 com o SSH

O protocolo SSH possui a habilidade de redirecionar seguramente aplicações gráficas, do ambiente X Window, para uma conexão SSH criptografada. Assim, a aplicação gráfica é executada na máquina remota e sua janela é exibida na máquina local, em um tráfego de rede protegido.

Se a máquina remota possui o sistema Linux, que é o se será abordado neste artigo, a implementação do "X11 Forwarding" torna-se simples e os clientes poderão ser tanto sistemas Linux como Windows.

Para isto poder acontecer são necessários alguns pré-requisitos. Primeiro, na máquina remota o servidor X deve estar em estado de execução. Segundo, o sistema da máquina remota precisa estar configurado para permitir o acesso por SSH. E finalmente, o servidor SSH (SSHd) da máquina remota e o cliente SSH da máquina local precisam estar configurados para permitir o X11 Forwarding.

O primeiro e o segundo pré-requisitos não serão abordados neste artigo, vamos partir do terceiro.

A configuração do servidor SSH se faz pelo arquivo "/etc/ssh/sshd_config". Neste arquivo encontram-se duas linhas que devem ter seus argumentos como mostrado abaixo, para ativar o redirecionamento do X11:

X11Forwarding yes
X11DisplayOffset 10

O parâmetro "X11Forwarding" marcado com "yes" especifica que o redirecionamento do X11 está permitido. O parâmetro "X11DisplayOffset" especifica o primeiro valor disponível para redirecionamento do X11 pelo servidor SSH, prevenindo que o SSHd interfira nos servidores X11 reais. O padrão é 10.

Basta reiniciar o serviço do SSHd para concluir esta parte da configuração da máquina remota. Agora vamos para o cliente, que é a máquina local onde irá receber as janelas das aplicações gráficas.

Em um cliente com sistema Linux, existem algumas formas de ativar o X11 Forwarding em uma sessão SSH. Uma é editar o arquivo de configuração "/etc/ssh/ssh_config" e alterar duas linhas para "ForwardX11 yes" e "ForwardX11Trusted yes". Esta forma ativa o recurso permanentemente para todos os usuários que forem utilizar o SSH. Uma outra forma é diretamente na linha de comando do SSH, com os parâmetros -X ou -Y. O parâmetro -X equivale ao "ForwardX11 yes" e o parâmetro -Y ao "ForwardX11Trusted yes".

Temos então duas classes de clientes, com o redirecionamento não-confiável do X11 e com o redirecionamento confiável do X11, respectivamente -X e -Y. O redirecionamento confiável do X11 significa que o cliente confia no servidor X, no qual está conectando pelo SSH, e que então neste servidor X não há qualquer programa malicioso como keylogger, screenshot ou algo que vá espionar sua conexão. O redirecionamento não-confiável do X11 significa uma conexão para um sistema desconhecido ou inseguro. Este tipo de conexão gera um cookie com o xauth e utiliza uma extensão de segurança para limitar o acesso. Algumas aplicações podem não funcionar neste modo não-confiável por causa destas limitações na segurança.

Assim, em um cliente com sistema Linux devemos executar o cliente SSH para abrir um terminal do sistema remoto e qualquer aplicação gráfica que for executada por este terminal será aberta na área de trabalho do cliente, que é a máquina local. Segue um exemplo de linha de comando para o SSH:

$ ssh -CY -c blowfish 192.168.1.102

Outros parâmetros podem ser utilizados na linha de comando do SSH, de acordo com a necessidade ou preferência. Por exemplo o parâmetro -C ativa a compactação de dados na transferência pela rede, o parâmetro -c especifica a cifra de criptografia. Este assunto sai do escopo deste artigo, é só um lembrete.

Em um cliente com sistema MS Windows são necessários um servidor X, para receber as janelas das aplicações remotas, e um cliente SSH, para estabelecer a conexão segura com o servidor remoto.

Um servidor X para Windows compatível com o X11 é o Xming (http://www.straightrunning.com/XmingNotes/). Sem entrar em muitos detalhes, pois o procedimento é fácil, instale e execute o Xming. Seu ícone aparecerá na barra de tarefas. Posicionando o cursor sobre seu ícone, o software mostra o endereço do servidor X no cliente Windows, algo como "Xming Server:0.0".

O PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/) é uma implementação gratuita de um cliente SSH para Windows. Não requer instalação, basta executá-lo para abrir sua janela de configuração. Na janela de configuração do PuTTY, na categoria "Session" escreva o nome da máquina ou o IP em "Host Name (or IP address)" e a porta se for o caso. Na categoria "Connection/SSH/X11" marque a quadrícula "Enable X11 forwarding" e em "X display location" escreva sem as aspas "localhost:0.0", que é o endereço do servidor X instalado no cliente Windows. Concluída esta configuração, basta clicar no botão "Open" para o PuTTY abrir a janela do terminal remoto. Qualquer aplicação gráfica que for executada por este terminal será aberta na área de trabalho do cliente Windows.

Como visto, pela ferramenta SSH é possível não só executar aplicações em modo texto como também aplicações gráficas. A administração de sistemas remotos torna-se bastante completa com este recurso a mais. Consulte as documentações das ferramentas citadas neste artigo para mais informações.

Nenhum comentário:

Postar um comentário