sábado, 15 de noviembre de 2008

Servidor de terminales en Ubuntu o Debian

Servidor de terminales

Introducción y antecedentes

Un servidor de terminales es un servidor que ejecuta un software que permite a los usuarios acceder al mismo remotamente desde otros PCs (que hacen de terminales) y manejarlo como si estuvieran sentados frente al servidor.

En los sistemas Unix esto ha existido prácticamente desde siempre ya que los usuarios se conectaban al servidor mediante telnet y lanzaban procesos de forma remota. El telnet es una aplicación cliente de terminal que permite desde cualquier PC de la red conectarse a un servidor. Para que la conexión remota sea posible, el servidor deberá tener instalado el software de servidor de telnet que en Debian es el paquete telnetd. Al comenzar la conexión el usuario debía identificarse con nombre (login) y contraseña (password) para poder utilizar el sistema, de la misma forma que lo haría si se sienta en la consola principal del servidor. El telnet está prácticamente en desuso ya que la información que se envía desde el cliente al servidor y viceversa está sin encriptar y cualquier usuario que pinche la red podrá averigurar el nombre del usuario y su contraseña fácilmente.

El sustituto del telnet es el ssh (Secure SHell) que permite conectarse a un servidor remoto pero de forma segura ya que las comunicaciones en todo momento van encriptadas con algoritmos muy seguros de forma que es prácticamente imposible descifrar la información. Para más información sobre ssh, haga clic aquí.

En todo momento estamos hablando de accesos remotos en modo texto, es decir, mediante un símbolo del sistema introduciendo comandos como si se tratara de una ventana de ms-dos o un terminal en modo texto de unix. En los años 80-90 era impensable que múltiples usuarios pudieran conectarse a un sistema remoto con terminales gráficos ya que requieren de una gran cantidad de memoria.

En la actualidad, debido al abaratamiento de la memoria RAM, esto se ha convertido en una realidad que ha llegado a los centros educativos y a las pequeñas y medianas empresas.

Servidor de terminales en Linux

Servidor de terminales mediante X-Window

Linux por sí solo es un servidor de terminales ya que es un sistema operativo multiusuario (varios usuarios pueden ejecutar aplicaciones simultaneamente en el servidor) y utiliza para las aplicaciones gráficas el sistema X-Windows.

El sistema X-Window es un sistema gráfico cliente-servidor orientado a red que se compone de servidor gráfico X (que es quien dibuja las ventanas) y clientes X (que son las aplicaciones gráficas), con lo cual resulta ideal si se quiere utilizar de forma remota. Cuando ejecutamos aplicaciones gráficas directamente sentados en la consola principal del servidor, las aplicaciones dirigen su salida hacia el servidor grafico local cuya dirección IP es 127.0.0.1, pero cuando ejecutamos aplicaciones gráficas desde un terminal, la salida se dirigirá hacia el servidor gráfico del terminal.

Para disfrutar de un terminal remoto en modo gráfico con X-Window, debemos disponer en nuestro terminal remoto de un servidor grafico X. Los clientes de nuestro servidor gráfico X serán las aplicaciones que lancemos en el servidor y que redigirán la salida hacia nuestro servidor gráfico para que podamos visualizar en nuestro terminal las ventanas generadas por las aplicaciones. Las aplicaciones se ejecutan en el servidor pero las ventanas se visualizan en el terminal.

Para realizar esto de forma sencilla y segura, podemos utilizar ssh. Si en el servidor disponemos de un servidor ssh con la opción de 'redirección X' activada, desde el cliente podemos conectarnos al servidor con un cliente ssh y ejecutar aplicaciones gráficas ya que el servidor ssh se encarga de redireccionar la salida gráfica de las aplicaciones que ejecutemos, hacia nuestro terminal, y además las comunicaciones irán encriptadas. También es posible conectarse por telnet y redirigir la salida gráfica hacia el servidor X de nuestro terminal pero en este caso las comunicaciones viajarán sin encriptar.

Conexión remota mediante ssh

SSH es un protocolo que, entre otras cosas, permite establecer una conexión en modo texto desde un terminal hacia un servidor, pero si en el terminal disponemos de un servidor gráfico X, será posible incluso ejecutar aplicaciones gráficas en el servidor y redirigir la salida hacia el servidor grafico de nuestro terminal, logrando una conexión gráfica remota.

Para realizar una conexión gráfica remota mediante ssh necesitamos tan solo dos elementos:
  • Un servidor con el servicio ssh corriendo.
  • Un terminal que disponga de servidor grafico X y de cliente ssh.
Como terminal gráfico X sirve un PC que tenga cualquier distribución de linux en modo gráfico. Incluso existe la posibilidad de conectar desde sistemas operativos Microsoft Windows si instalamos cygwin. Los pasos a realizar son dos:

  • Establecer la conexión con SSH desde el terminal al servidor.
  • Ejecutar una aplicación gráfica.

El servidor ssh deberá tener activada la redirección del protocolo X (lo está por defecto), es decir, deberá tener el siguiente parámetro en el archivo de configuración /etc/ssh/sshd_config:

// Habilitar la redirección X en /etc/ssh/sshd_config
X11Forwarding yes


Para tener más información sobre cómo instalar y configurar el servidor ssh para permitir accesos remotos usando el entorno gráfico pulsar aquí.

Gimp ejecutándose de modo remoto mediante ssh

Fuente:
Página del isftic :
Curso Redes de Área Local. Aplicaciones y servicios en Linux. del isftic http://www.isftic.mepsyd.es/formacion/materiales/85/cd/REDES_LINUX/indice.htm

No hay comentarios: