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.



Servidor de terminales

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, ver el apartado Instalación del servidor de Shell Seguro - SSH.

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 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.



Servidor de terminales mediante X-Windows

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 cifrar.

Ventajas de la utilización de un servidor de terminales en centros educativos

En centros educativos, disponer de algún aula con un sistema de terminales nos ofrece algunas ventajas:
  • Aula de bajo coste: Con un PC moderno para el servidor con suficiente memoria RAM (por ejemplo 8 GB) y 12 PCs obsoletos (Pentium I, Pentium II), podemos tener un aula de informática de 12 PCs por poco más que el precio de uno. El puesto de trabajo del profesor podría ser el propio servidor. En lugar de usar PCs obsoletos, se pueden adquirir CPUs básicas similares a las de los netbooks, que ocupan poco y pueden ocultarse tras el monitor, ahorrando espacio.
  • Aula de bajo mantenimiento a nivel software: Como todos los PCs se conectan al servidor y ejecutan sus aplicaciones, solo es necesario instalar y configurar aplicaciones en el servidor. Lo mismo ocurre con las impresoras y el acceso a Internet, solo hay que configurarlo en el servidor. Solamente hay que mantener un PC para que funcionen los 12.
  • Aula de bajo coste de actualización: A medida que pasa el tiempo, los PCs se van quedando obsoletos y es necesario ir ampliando el disco duro, la memoria, y cuando se quedan pequeños, hay que cambiar el PC completo. En éste caso solo será necesario aumentar las prestaciones del servidor.
  • Datos más seguros: Al quedar todos los documentos de los usuarios almacenados en el servidor, el acceso no autorizado a datos de otros usuarios es más dificil ya que requiere el acceso físico al servidor. La realización de copias de seguridad es más sencilla ya que todos los documentos de los usuarios se encuentran en el servidor.
También tiene algún inconveniente, por ejemplo la utilización de los medios de almacenamiento locales (disquetera, discos usb) es compleja. Como las aplicaciones se ejecutan en el servidor, si introducimos un DVD en el terminal, el servidor no va a poder acceder a su contenido. Lo mismo ocurre con los pendrives, además los PCs obsoletos no disponen de puerto USB.

La solución que se suele adoptar en un sistema de este tipo para el acceso físico a los documentos, es utilizar una herramienta web tipo blog, wiki o plataforma de formación. Los usuarios tendrían acceso a sus documentos vía web. Con una herramienta web adecuada, los usuarios podrán subir y bajar archivos, así como crear o eliminar carpetas de una forma sencilla. Para almacenar sus documentos en un pendrive, los usuarios deberán ir a un terminal con puerto USB y descargar sus documentos desde la web. Esta forma de trabajo es ventajosa ya que podremos acceder a nuestros documentos desde cualquier PC de la intranet, y si el servidor web es accesible desde fuera, desde cualquier PC de Internet.

Si el servidor de terminales es un potente servidor con una gran cantidad de memoria, podrá satisfacer las necesidades de un gran número de usuarios de forma simultánea. En algunos centros educativos están proliferando este tipo de sistemas ya que con un servidor que disponga de 16 GB de memoria RAM y discos duros rápidos, se pueden conectar unos 30 usuarios simultáneos desde terminales (que pueden ser PCs obsoletos como Pentium I) y disfrutar de las prestaciones de un PC actual y ejecutar cualquier aplicación que haya instalada en el servidor, además el único equipo que hay que mantener es el servidor con lo cual ahorramos costes de mantenimiento. El proyecto LTSP ( http://www.ltsp.org en inglés) están enfocados a implantar este tipo de sistemas en centros educativos.

El único requisito que deben cumplir los PCs que hacen de terminales es disponer de tarjeta de red y disponer de servidor gráfico X. Todos los Linux disponen de servidor gráfico X. Una distribución de Linux ligera apta para ser usada en los terminales es Damn Small Linux ( http://www.damnsmalllinux.org ). También existen servidores gráficos X para sistemas operativos Microsoft Windows, algunos de pago como X-win32 y libres como Xming o como cygwin ( http://www.cygwin.com ) que mas que un servidor X para Windows es casi un Unix para Windows.

Conectando al servidor de terminales

Uno de los problemas que nos encontramos en el centro es que tanto el profesorado como el personal de administración pretenden utilizar el servidor como un cliente más. Es muy frecuente que nos pregunten el motivo de tener un equipo con una contraseña que únicamente conoce una persona y por lo tanto no puede ser utilizado ni para imprimir un documento. El personal de administración, escaso de recursos informáticos, considera un derroche económico tener un equipo parado. La realidad es que el servidor es el equipo más importante de la estructura que estamos creando y por ello debe estar ubicado en un lugar de difícil acceso, aunque ello dificultará nuestras tareas de configuración y mantenimiento. Pero eso no es problema ya que de forma remota disponemos de pleno acceso al servidor aunque no estemos situados físicamente sobre la consola del mismo.

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ía posible incluso ejecutar aplicaciones gráficas en el servidor y redirigir la salida hacia el servidor gráfico 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 arrancar el servidor ssh debemos ejecutar:
// Arrancar el servidor ssh
sudo /etc/init.d/ssh start
Nota: Para más información sobre el servicio ssh, consultar el apartado Otros servicios

Una vez dispongamos de un servidor ssh funcionando, desde el cliente podremos iniciar sesión en el servidor mediante el comando ssh (cliente ssh) y una vez iniciada sesión en el servidor, podemos lanzar cualquier aplicación gráfica que se visualizará en la pantalla del cliente.

Por ejemplo, supongamos que en nuestro terminal tenemos una versión reducida de Linux como Damn Small Linux (http://www.damnsmalllinux.org ) y deseamos conectarnos a otro PC que tiene instalado Ubuntu y ejecutar el editor gráfico gimp, los pasos que haremos serán:
// Conexión gráfica remota por ssh
[dsl]$ ssh -X pepe@192.168.0.50 // Nos conectamos por ssh como usuario...
...pepe y añadimos la opción -X para redirigir Xwindows.
[ubuntu]$ gimp // Ya estamos conectados. Ejecutamos el gimp

El resultado será que desde el terminal podemos manejar la aplicación gimp que realmente se está ejecutando en el servidor. Podemos verlo en la siguiente imagen:




Ejecución de una aplicación gráfica remotamente

Si deseamos disponer del escritorio completo, podemos ejecutar:

// Ejecutar escritorio gnome
gnome-session

De esta forma tendremos en nuestro terminal un escritorio gnome del servidor.

Los terminales podrían disponer de un sistema linux mínimo configurado de manera que al arrancar se conecten automáticamente al servidor de terminales. De ésta forma los usuarios creerán que están manejando el PC en el que están sentados aunque realmente están manejando las aplicaciones del servidor.

Se podrían conectar simultáneamente tantos usuarios como permita la memoria del servidor aunque lógicamente, cuantos más usuarios se conecten de forma simultánea, mayor será la carga del servidor y más lenta será su respuesta. Para que el servidor vaya un poco suelto, debe disponer de unos 512 MB por cada cliente. Conviene que disponga de discos duros rápidos e incluso en sistema RAID 1 (espejo) para mayor seguridad y rapidez.

Icono de iDevice ¿Sabías que?
Montar un aula de informática con un servidor y CPUs básicas en los terminales, además de simplificar el mantenimiento, tiene otra ventaja importante...
Pregunta Verdadero-Falso
Si conectamos desde el cliente por ssh al servidor y ejecutamos una aplicación que no está instalada en el cliente pero sí está instalada en el servidor, ¿podremos utilizar dicha aplicación desde el cliente?
Verdadero Falso