FreeRDP Launcher: Una interfaz gráfica para la gestión de conexiones RDP en Linux

En la administración de sistemas desde entornos Linux, la conexión a servidores remotos es una tarea cotidiana. Existen múltiples clientes gráficos integrales que ofrecen soluciones completas, aunque a menudo sobredimensionadas para quien busca una conexión directa y sin latencia.

Por otro lado, FreeRDP ofrece una implementación del protocolo RDP altamente eficiente y compatible. Sin embargo, su diseño basado en línea de comandos (CLI) implica una curva de aprendizaje y una fricción operativa: la necesidad de construir comandos extensos con múltiples parámetros para configurar aspectos básicos como la redirección de audio o el montaje de unidades.

FreeRDP Launcher

Interfaz gráfica (GUI) para la gestión de conexiones remotas. Implementación nativa para FreeRDP en sistemas Debian y Ubuntu.

Gestión de Certificados

Validación visual de huellas digitales SSL. Intercepta la salida del proceso para permitir la aceptación o rechazo de certificados desconocidos.

Control de Recursos

Configuración simplificada para montaje de unidades locales y redirección de flujo de audio sin necesidad de argumentos en consola.

Integración de Motor

Actúa como capa de abstracción sobre el protocolo RDP estándar, manteniendo la eficiencia del ejecutable subyacente.

Desarrollo del Proyecto

El desarrollo de FreeRDP Launcher responde a la necesidad de optimizar la operativa diaria en entornos Linux. El objetivo principal es eliminar la complejidad sintáctica del uso directo de la terminal.

Inicialmente concebido como un script de automatización en Bash, el proyecto migró hacia una aplicación estructurada en Python. Esto permite un manejo de excepciones más robusto y una interacción de usuario que los scripts de shell no pueden proporcionar de forma nativa.

Stack Tecnológico

Objetivo: Eficiencia y Usabilidad

La motivación tras FreeRDP Launcher no es reemplazar las herramientas existentes, sino facilitar el acceso al motor freerdp mediante una interfaz gráfica dedicada.

El proyecto comenzó como una serie de scripts en Bash diseñados para automatizar la entrada de credenciales y direcciones IP. Si bien funcional, esta aproximación presentaba limitaciones en la gestión de errores y en la interacción con el usuario, especialmente ante alertas de seguridad o certificados no confiables.

La evolución lógica fue el desarrollo de una aplicación nativa que actuase como wrapper (envoltorio), centralizando la configuración y ejecución de las conexiones.

Funcionamiento Técnico

FreeRDP Launcher funciona orquestando el proceso de conexión. La aplicación no reimplementa el protocolo RDP; utiliza las librerías y el ejecutable sdl-freerdp3 instalado en el sistema.

Esta arquitectura ofrece ventajas claras:

  1. Abstracción de Sintaxis: El usuario interactúa con campos de formulario claros (IP, Usuario, Opciones), y la aplicación construye y ejecuta la sentencia correcta en segundo plano.
  2. Gestión de Certificados SSL: La aplicación captura la salida estándar del proceso. Si el servidor presenta un certificado desconocido, la interfaz gráfica muestra la huella digital al usuario para su verificación manual, replicando el comportamiento de clientes comerciales.
  3. Configuración de Entorno: Opciones como el uso de múltiples monitores, la calidad de color o la redirección de dispositivos se aplican mediante selectores simples, eliminando la necesidad de consultar la documentación de flags.

Reconocimiento y Licencia

Este software se apoya íntegramente en el trabajo del proyecto FreeRDP. Gracias a su licencia Apache 2.0, es posible desarrollar herramientas complementarias que extiendan su usabilidad.

El código fuente de FreeRDP Launcher está disponible para su revisión y descarga. Si utiliza FreeRDP en su flujo de trabajo habitual y requiere una gestión más visual de sus conexiones, puede probar esta implementación.

Quedo atento a cualquier comentario técnico o reporte de incidencias que puedan surgir durante su uso en diferentes distribuciones.

Bonus Track: La versión minimalista en Bash

Como mencioné anteriormente, FreeRDP Launcher nació de la necesidad de automatizar procesos. Para aquellos administradores de sistemas que prefieren la simplicidad absoluta de la terminal y no desean depender de entornos gráficos o librerías de Python, comparto el script original.

Es una herramienta funcional, ligera y que cumple con el objetivo de evitar escribir comandos extensos manualmente.

#!/bin/bash
# ©millaredos.com
# version 1.0

# Funciones definidas en el script

mainmenu () {
    clear
    echo "Selecciona un servidor al que conectarse"
    echo
    echo -e "1.- server1 \n2.- server2 \n3.- Otro \n4.- Salir"
    read option
    case $option in

        1) server1 ;;
        2) server2 ;;
        3) ip ;;
        4) salir ;;
        *) echo "Opción incorrecta"
           sleep 5
           mainmenu ;;
    esac
}

server1 () {
    echo -e "\n Teclee el usuario"
    read usu
    echo "Teclee la contraseña"
    read -s cont
    # Modificar IP aquí abajo (/v:IP)
    sdl-freerdp3 /v:192.168.1.10 /u:$usu /p:$cont /f /dynamic-resolution +clipboard
    mainmenu
}

server2 () {
    echo -e "\n Teclee el usuario"
    read usu
    echo "Teclee la contraseña"
    read -s cont
    # Modificar IP aquí abajo (/v:IP)
    sdl-freerdp3 /v:192.168.1.20 /u:$usu /p:$cont /f /dynamic-resolution +clipboard
    mainmenu
}

ip () {
    echo -e "\n Teclee el usuario"
    read usu
    echo "Teclee la contraseña"
    read -s cont
    echo "Teclee la ip"
    read ip
    sdl-freerdp3 /v:$ip /u:$usu /p:$cont /f /dynamic-resolution +clipboard
    mainmenu
}

salir () {
    exit
}

# Para ejecutar el script. Comenzamos llamando a mainmenu
mainmenu

Guía de Personalización

Este script es totalmente modular. Si desea adaptarlo a su infraestructura, aquí tiene las claves para modificarlo:

  1. Cambiar Nombres e IPs:
    • Para cambiar el nombre visible en el menú, edite la línea echo -e "1.- server1..." dentro de la función mainmenu.
    • Para establecer la dirección real del servidor, vaya a la función correspondiente (por ejemplo, server1) y modifique el parámetro /v:192.168.1.10 por la IP o dominio de su máquina.
  2. Añadir nuevas conexiones: Si necesita añadir un «Servidor 3», debe realizar dos cambios:
    • En el Menú: Añada la opción visual y la lógica en el case. Ejemplo: 3) server3 ;;. (Recuerde reordenar los números si es necesario).
    • Nueva Función: Copie y pegue el bloque de la función server1, cámbiele el nombre a server3 y asigne la nueva IP.
  3. Ejecución: Guarde el código en un archivo (ej: rdp.sh), otórguele permisos de ejecución con chmod +x rdp.sh y ejecútelo desde su terminal ./rdp.sh

Nota sobre Versiones y Compatibilidad

Para total transparencia, el desarrollo y las pruebas de FreeRDP Launcher se han realizado sobre una instalación limpia de Debian 13 (Trixie), utilizando la paquetería nativa disponible en los repositorios oficiales en este momento (v3.15).

Es importante notar que el cliente sdl-freerdp3 aún emite advertencias de «experimental» en su salida de consola, aunque en mis pruebas la estabilidad ha sido total para las funciones implementadas.

Salida de versión en el entorno de pruebas:

Bash

user@debian:~$ sdl-freerdp3 -version
[WARN][com.freerdp.client.common.cmdline] - [experimental] sdl-freerdp3 client is currently experimental!
[WARN][com.freerdp.client.common.cmdline] - If problems occur please check https://github.com/FreeRDP/FreeRDP/issues
This is FreeRDP version 3.15.0 (n/a)

Soy consciente de que el proyecto FreeRDP avanza a gran velocidad (la versión upstream actual ya ronda la v3.21). Tengo en mi hoja de ruta compilar e instalar la versión más reciente manualmente para validar la compatibilidad del wrapper con las últimas releases.

Actualizaré este artículo y el repositorio en cuanto certifique que todo funciona correctamente con las nuevas versiones. De momento, la versión 3.15 es la recomendada por estabilidad en Debian.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Francisco Crespo.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.