Tag Archives: rdesktop

Errores "Connection reset by peer" durante la conexión a Windows con rdesktop

Introducción

Durante la conexión a máquinas Windows desde Linux Ubuntu utilizando el protocolo Remote Desktop y a rdesktop como herramienta se empezaron a obtener errores de conexión como el siguiente.

ERROR: recv: Connection reset by peer

El problema

rdesktop permite la conexión de escritorio remoto entre máquinas Windows y otros sistemas operativos como Linux, sin embargo no soporta aún el nivel de autenticación de red que implementa por defecto el servicio de Remote Desktop.

La solución

En la máquina Windows que se encuentra ejecutando el servidor de Remote Desktop acceder a la opción del panel de control de Allow remote access to your computer o acceder directamente a las System Properties.

Allow Remote Access - Remote Desktop
Allow remote access to your computer

En la pestaña de Remote y bajo la sección de Remote Desktop seleccionar la opción Allow connections from computers running any version of Remote Desktop (less secure).  Por defecto se encuentra seleccionada la tercera opción.

Allow connections from any Remote Desktop protocol’s version

Otra alternativa

Como otra alternativa de conexión al escritorio remoto que parece no tener el problema de rdesktop con la autenticación de red es freerdp el cual se invoca desde la línea de comando de la siguiente manera.

$ xfreerdp -u USERNAME -d DOMAIN -p PASSWORD HOST

Esta herramienta incluye un parámetro adicional (-g) que encontré muy interesante y que permite escalar en un porcentaje específico la ventana local en la que se despliega el escritorio remoto.

Recursos

Acceder a un servicio RDP de Windows a través de un túnel SSH

Introducción.

Esta semana fue necesario acceder remotamente a unos servidores para desplegar en ellos un proyecto.  El servidor web es visible a través de Internet y utiliza GNU/Linux, este expone además del http el servicio ssh al exterior utilizando el puerto 45729.  En la red interna (por obvias razones) se encuentra un segundo servidor con Windows XP SP3 sobre el cual se ejecuta la base de datos MSSQL.

Estructura general de la red
Estructura general de la red

Trivialmente el acceso al servidor web es muy sencillo gracias al SSH.  La transmisión de archivos al servidor Windows también puede ser fácilmente implementada gracias al cliente de Samba que permite una interacción transparente con el protocolo SMB de este sistema operativo.  Pero qué pasa si es necesario acceder a la consola grafica de Windows ?  Desafortunadamente en esta etapa de despliegue es necsario hacer verificaciones y algunos cambios en la base de datos MSSQL y no fue posible encontrar herramientas de administración remotas o web que fueran realmente efectivas.  La única opción sería acceder al escritorio a través de Internet.

Para hacer esto, el primer paso es activar el servicio de escritorio remoto (Remote Desktop Protocol) en Windows XP y autorizar su acceso desde la red LAN.

El segundo paso consiste en garantizar el acceso remoto a través de Internet.  Para esto se deberá aprovechar el protocolo SSH del servidor GNU/Linux.

Una primera aproximación es utilizar el ForwardX11 del servicio SSH a través del cual es posible unrrutar el protocolo de la interfaz gráfica de usuario (X11) hacia el cliente a través de la conexión segura.  Después de establecida la conexión se utiliza la aplicación rdesktop, local al servidor web, y su presentación es redirigida hacia el cliente gracias al protocolo SSH.

Esta aproximación fue exitosa, sin embargo los tiempos de respuesta aunque tolerables, fueron muy largos.

Una segunda aproximación consiste en la creación de un túnel SSH entre el servicio de RDP del servidor con Windows XP y el servidor GNU/Linux que pueda ser accedido desde Internet a través de conexiones seguras.  Esta aproximación, que se describe a continuación, nos dió unos mejores tiempos de respuesta a través de una implementación simple pero mas elegante que la anterior.

Procedimiento.

Como se mencionó anteriormente, el primer paso es la activación del servicio de escritorio remoto en la máquina Windows XP SP3 que se encuentra en la red privada, esto se debe realizar localmente.

El siguiente paso consiste en establecer el túnel entre el cliente y el servidor web (GNU/Linux) a través de Internet involucrando al servidor de bases de datos (Windows XP) asociándolo a un puerto específico del primero.  Para hacer esto se debe ejecutar el siguiente comando desde el cliente.

$ ssh -L 33389:192.168.3.1:3389 -l usuario mi.servidor.com -p 45729 -Nf

mi.servidor.com es el nombre FQDN con el que se accede al servidor GNU/Linux que expone a Internet el servicio de SSH a través del cual se ingresa a la red remota.  El puerto que utiliza en este caso el servicio SSH es el 45729.  De manera similar, la dirección del servidor Windows XP es la 192.168.3.1 y el puerto (por defecto) que utiliza el servicio de RPD es el 3389 con el cual se establece un túnel con el puerto local 33389.

El proceso después de autenticado se envía automáticamente a background retornando el control del shell gracias al parámetro -N especificado, sin embargo es posible verificar el establecimiento del túnel de la siguiente manera.

$ ps -fea | grep ssh

jimezam  25009     1  0 14:46 ?        00:00:00 ssh -L 33389:192.168.3.1:3389 -l usuario mi.servidor.com -p 45729 -Nf

Esquema general del túnel SSH
Esquema general del túnel SSH

En términos generales, el túnel SSH le permite al cliente acceder al servicio RDP remoto (192.168.3.1:3389) desde localhost:33389 de manera transparente a través del servicio SSH de mi.servidor.com.

Finalmente en el cliente se accede al escritorio remoto utilizando una aplicación como rdesktop de la siguiente manera.

$ rdesktop -z localhost:33389

La ejecución de este comando mostrará localmente la consola gráfica de la máquina Windows XP.

Escritorio remoto del servidor Windows XP
Escritorio remoto del servidor Windows XP

Una nota acerca de clientes en Windows.

Este procedimiento puede adaptarse para el uso de clientes Windows utilizando herramientas adicionales como el caso de Putty para el establecimiento del túnel SSH y la aplicación para conexión a escritorios remotos de Windows.

El primero de ellos es software libre y puede obtenerse en la página web de Putty mientras que el segundo hace parte de las herramientas incluídas en Windows XP y se accede a través de los siguientes menúes.

Inicio > Accesorios > Conexión a escritorio remoto.

Conexión al escritorio remoto de Windows XP
Conexión al escritorio remoto de Windows XP

Enlaces.