quinta-feira, 1 de março de 2012

Ubuntu terminal server

O linux sempre foi capaz de suportar sessões remotas, tanto na CLI como na interface gráfica, pois está completamente construído à volta da arquitetura cliente-servidor.
Para iniciar uma sessão remota completamente encriptada através de CLI basta usar o ssh, para poder usar aplicações gráficas através da ligação ssh basta adicionar a opção -X ao ssh. O servidor X pode ser configurado para aceitar sessões remotas (ou seja, o desktop completo e não apenas aplicações individuais) através do XDMCP.
Desde que fiquemos sempre no mundo linux (ou OSX) funciona tudo, mas se queremos ligar a partir de uma máquina Windows a uma máquina linux estamos mais limitados. Existem alguns clientes X para Windows: Cygwin/X, Xming, WeirdX, eXceed, etc. Alguns são open source, outros são proprietários.
O protocolo NX vai um passo mais à frente e permite usar várias técnicas (cache, compressão de dados) para acelerar o processo, permitindo usar sessões remotas mesmo através de ligações lentas.
A empresa NoMachine disponibiliza clientes gratuitos para Windows, Linux, MacOS e Solaris. O núcleo das aplicações NX é open source, mas algumas das aplicações disponibilizadas pela NoMachines são pagas. Há o projeo FreeNX que fornece um servidor NX completamente open source e ainda a Google disponibiliza um servidor compatível com o protocolo NX chamado NeatX.
Há então 3 alternativas para criar um servidor NX: o servidor da NoMachines, FreeNX e NeatX.

Servidor da NoMachines
Na máquina servidora é preciso instalar o pacote cliente (nxclient), o node (nxnode) e finalmente o servidor (nxserver). Fica imediatamente a funcionar, mas está limitado a 2 utilizadores, mesmo que não estejam ligados em simultâneo.

FreeNX
Basta seguir este guião:
https://help.ubuntu.com/community/FreeNX

NeatX
Vamos então instalar o servidor NeatX numa máquina com Ubuntu (lucid).
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:freenx-team

sudo apt-get update
sudo apt-get install neatx-server

Nos três casos, na máquina cliente (Windows, linux, Mac ou Solaris), basta ir a http://www.nomachine.com/download.php e fazer o download do cliente respetivo.

x2go
O projeto x2go pretende atingir o mesmo objetivo, mas é completamente open source. Usa as bibliotecas do NX, pelo que o seu desempenho deverá ser equivalente.
Por enquanto ainda não está num estado muito maturo, mas é um projeto a manter debaixo de olho.
http://www.x2go.org/

WinSwitch
Esta aplicação permite partilhar janelas de aplicações entre diferentes sistemas. Por exemplo inicia-se o OpenOffice no linux e pode enviar-se a janela para um computador Windows ou Mac ligado a esse servidor linux. Não consegui partilhar aplicações Windows para o Linux, mas suponho que seja possível. Mais um projeto a manter debaixo de olho.
http://winswitch.org/

Referências
http://www.ubuntugeek.com/how-to-install-neatx-similar-to-freenx-server-on-ubuntu-10-04-lucid-lynx.html
Mais leituras
http://diznix.com/articles/remote-x-connecting-to-linux-from-windows/