Si sois como yo, probablemente tenéis al menos un viejo PC o portátil acumulando polvo en algún lugar de vuestra casa. Hay muchas formas de darle vida a estos dispositivos, pero una opción muy sencilla es usarlos como thin clients para acceder en remoto a una máquina más potente y moderna.

Servidor

Vamos a configurar nuestro PC para que actúe como servidor. Asumiendo que tenemos Debian instalado, solamente necesitaremos instalar el software de servidor.

xrdp

Para este objetivo, usaremos xrdp que es un servidor de código abierto para el protocolo RDP. Para instalarlo, ejecutamos:

sudo apt install xrdp

Asegurando la conexión

Se usa Seguridad RDP Estándar, la cual no está a salvo de ataques de intermediario. El nivel de cifrado de la Seguridad RDP Estándar se controla con crypt_level.

Manpages

Definitivamente deberíamos hacer algo para remediar esto por lo que vamos a usar TLS como capa de seguridad.

Los certificados necesarios se generan automáticamente durante la instalación del paquete ssl-cert pero necesitaremos añadir el usuario xrdp a este grupo para que pueda leer la clave privada:

sudo adduser xrdp ssl-cert

Ahora vamos a editar el archivo /etc/xrdp/xrdp.ini y cambiar:

security_layer=negotiate
certificate=
key_file=

Por:

security_layer=tls
certificate=/etc/xrdp/cert.pem
key_file=/etc/xrdp/key.pem

Y reiniciamos el servicio:

sudo service xrdp restart

Con esto, nuestro PC está preparado para recibir conexiones remotas desde el thin client.

Cliente

A continuación podemos proceder con la configuración de la máquina que actuará como thin client.

Para ello necesitamos una instalación base de Debian 9 (stretch) con apenas unos cuantos paquetes adicionales. Por lo tanto, deberemos asegurarnos de que nada está marcado en el paso Software selection del proceso de instalación:

Debian software selection

Posteriormente, una vez hayamos arrancado Debian, podemos instalar un gestor de pantalla y un gestor de ventanas para tener un simple entorno gráfico. Usaremos LightDM y Openbox respectivamente, y tint2 como barra de tareas liviana:

sudo apt install lightdm openbox tint2 xterm

Tras un reinicio, podremos ver la pantalla de acceso:

Pantalla de acceso de Debian

Vamos a configurar Openbox para que ejecute tint2 tras acceder al escritorio. Necesitamos copiar la configuración por defecto de Openbox a nuestra carpeta de usuario para poder modificarla:

mkdir -p ~/.config/openbox && cp /etc/xdg/openbox/* ~/.config/openbox

Editaremos entonces el archivo ~/.config/openbox/autostart para añadir, al final, las siguientes líneas:

# Launch taskbar
tint2 &

Remmina

Para acceder a nuestro servidor remotamente, usaremos Remmina puesto que soporta varios protocolos (RDP, VNC, SSH, NX, XDMCP, etc.):

sudo apt install remmina

Una vez ha finalizada la instalación, editaremos de nuevo el archivo autostart de Openbox para ejecutar Remmina:

# Start Remmina
remmina &

Tras acceder a nuestro escritorio, podemos crear una nueva conexión de Remmina pulsando Ctrl+N. Simplemente tenemos que poner un nombre para la conexión y la dirección o nombre de equipo de nuestro servidor:

Nueva conexión de Remmina

Una vez hagamos click sobre Conectar, se guardará la nueva conexión y se nos pedirá que aceptemos el certificado TLS del servidor:

Detalles del certificado

Si lo aceptamos, veremos la pantalla de acceso de nuestro servidor remoto:

Acceso remoto

Aquí simplemente tenemos que introducir el nombre de usuario y contraseña de nuestro servidor remoto y accederemos al escritorio. Si pulsamos R_Ctrl+F cambiaremos a pantalla completa para una experiencia más transparente:

Escritorio remoto

Mostrar la ventana de acceso remoto tras arrancar

Podemos configurar nuestro thin client Debian para que acceda al escritorio de forma automática y Remmina lance la conexión a nuestro servidor de forma que se nos presente directamente la pantalla de acceso remoto.

Primero deberemos configurar LightDM para que acceda automáticamente al escritorio de nuestro usuario local. Para ello, tenemos que editar el archivo /etc/lightdm/lightdm.conf como superusuario y configurar nuestro nombre de usuario en la sección Seat configuration:

[Seat:*]
autologin-user=agus

Luego, debemos averiguar el nombre de archivo de nuestra conexión tal y como la guarda Remmina. Las conexiones se guardan en $HOME/.remmina, para versiones antiguas, o en $XDG_DATA_HOME/remmina para las más recientes.

~/.remmina
├── 1492192074855.remmina
└── remmina.pref

Conforme al nombre del archivo, tenemos que modificar la última línea del archivo autostart de Openbox:

# Start Remmina
remmina -c ~/.remmina/1492192074855.remmina &

Si reiniciamos ahora, nos conectaremos directamente a la máquina remota y veremos la pantalla de acceso:

Acceso remoto

Acceder al servidor remoto tras acceso en local

Podemos configurar Remmina para que guarde las credenciales del usuario remoto y nos dé acceso al servidor automáticamente:

Para ello, necesitamos guardar el nombre de usuario y contraseña en el perfil de la conexión:

Guardar credenciales

Sin embargo, para mayor seguridad, deberíamos instalar el complemento de GNOME para Remmina de forma que la contraseña se guarde en el llavero de GNOME:

sudo apt install remmina-plugin-gnome seahorse

Necesitaremos deslogarnos y acceder al escritorio de nuevo para que se genere el llavero con nuestra contraseña local.

Ahora, si modificamos la conexión y añadimos las credenciales, la contraseña se guardará en el llavero de GNOME:

Llavero de GNOME

Puesto que nuestra contraseña local es necesaria para desbloquear el llavero y recuperar la contraseña remota, deberemos deshacer los cambios en /etc/lightdm/lightdm.conf:

[Seat:*]
#autologin-user=agus

Si no, se nos pedirá desbloquear el llavero antes de que Remmina pueda conectarse con nuestro servidor remoto.

Poniendo orden

Puesto que esta máquina va a hacer poco más que ejecutar Remmina para conectarnos a nuestro servidor, podemos desinstalar algunos paquetes superfluos. Cosas como la administración de tareas o el registro de mensajes no tienen sentido:

sudo apt purge --auto-remove anacron cron rsyslog

Como nota adicional, si tenemos pensado conectarnos a una red inalámbrica, quizás nos interese instalar NetworkManager y su applet para facilitarnos las cosas:

sudo apt install network-manager-gnome

Sin embargo, puest que NetworkManager usa el llavero de GNOME, no seremos capaces de acceder localmente de forma automática de forma transparente.

Conclusión

Como he visto, usar un viejo PC o portátil como thin client es una buena manera de dar nueva vida a estos dispositivos.

Los requisitos de hardware son muy bajos puesto que usará principalmente la red. Puedes ver la carga en un sistema con sólo 128 MB de RAM:

Carga del sistema

Leer más