Cómo crear un servidor SSH Windows

Putty icon

Ninguna de las versiones de Windows, ya sea Windows XP, Windows 7 u 8 o las mas modernas versiones de servidor como Windows 2008 o Windows 2012, proporciona un servidor SSH mediante el que acceder de forma estándar desde otras máquinas con distinto sistema operativo para ejecutar comandos de la consola, copiar ficheros, redireccionar puertos o automatizar el acceso mediante el empleo de claves pública/privada. La alternativa de Microsoft para esto es WinRM / Powershell, pero muchas son las ocasiones que encontraremos en las que necesitaremos un acceso estándar y compatible con otros sistemas, y qué mejor para ello que emplear el extendido y archiconocido protocolo SSH para entrar a nuestras máquinas Windows de forma segura.

freeSSHd, un servidor SSH gratuito para Windows

Aunque existen otras alternativas de software SSH para Windows, en su mayoría comerciales aunque también gratuitas, freeSSHd es un servidor SSH muy sencillo de configurar y que da muy buenos resultados. Ofrece cifrado fuerte y autenticación mediante usuario/contraseña o mediante el intercambio de pares de claves públicas y privadas, además de permitir el intercambio seguro de ficheros mediante los protocolos FTP/FTPS/SFTP y la tunelización de conexiones mediante redirección de puertos. Es decir, básicamente todo lo que podemos encontrar en OpenSSH.

freeSSHd allowed ciphers: AES, 3DES, Blowfish, CAST128

Instalación y configuración de freeSSHd

Una vez descargada la aplicación e instalada de la forma habitual, al arrancarla encontraremos un panel de control como el de la siguiente captura. El primer paso que tenemos que dar para configurarla es habilitar el servidor SSH para que se ejecute como un servicio Windows que corra en segundo plano (SSH server is not running. Click here to start it.).

freeSSHd: start/stop SSH servicefreeSSHd running in the background

Abrir el puerto 22 en el firewall de Windows

Para poder llegar al nuevo servidor SSH desde el exterior necesitaremos que el puerto 22 (o aquel que elijamos en la configuración) esté abierto y no haya ninguna restricción para establecer conexiones con él. Por defecto el firewall de Windows bloquea este tipo de conexiones, por lo que deberemos autorizarlas explícitamente:

Windows firewall configuration dialogEdit SSH port 22

Transmisión segura de ficheros mediante SFTP

freeSSHd actúa también como un servidor FTP seguro, permitiendo el intercambio seguro de ficheros mediante los protocolos FTP/FTPS/SFTP. Como estos protocolos se apoyan en la conexión SSH establecida por debajo, no hay que hacer nada especial para configurarlos. Tan sólo indicando cuál queremos que sea el directorio raíz para el intercambio de ficheros y utilizando un cliente adecuado contra el puerto 22 que acabamos de abrir podremos realizar transferencias seguras de archivos.

SFTP home path

Acceso mediante clave pública

Una de las enormes ventajas que ofrece SSH es que podemos automatizar el acceso a nuestro servidor sin necesidad de estar introduciendo nuestro usuario y contraseña cada vez. Simplemente generando un nuevo par de claves privada y pública para nuestro usuario, o bien asignándole unas ya existentes podremos entrar a la consola de comandos o copiar ficheros a nuestro servidor con un solo clic.

User properties

Para ello indicaremos a freeSSHd cuál es el directorio donde se almacenarán las claves públicas de los distintos usuarios, que por defecto será el de instalación, y allí copiaremos un fichero por cada usuario cuyo nombre será simplemente el nombre del usuario en cuestión sin ninguna extensión. Cada uno de esos ficheros contendrá únicamente la clave pública de ese usuario. Las claves privadas no deben almacenarse bajo ningún concepto en el servidor, sino sólo en el propio cliente SSH que utilicemos para conectarnos.

Public key folder pathUsers public key folder

Redirección de puertos (port fordwarding)

Otra posibilidad que nos ofrece freeSSHd es poder tunelizar conexiones a otros puertos/servicios que nada tienen que ver utilizando el acceso seguro SSH. Es decir, podríamos establecer una conexión al servidor de terminales de Windows (Terminal Server) mediante protocolo RDP a través del puerto 3389 (conexión no segura) aprovechando nuestro acceso SSH sin necesidad de abrir dicho puerto 3389 en nuestro firewall. Además, de este modo aunque el tráfico RDP no se encuentre cifrado, viajará de forma segura a través de Internet al encontrarse encapsulado en paquetes SSH que sí están fuertemente encriptados. De esta forma ganaremos mucho en seguridad y en simplicidad, pues podremos establecer todo tipo de conexiones a nuestro servidor tan solo abriendo el puerto 22 en nuestro firewall, pudiendo concentrar todos nuestros esfuerzos únicamente en la protección y monitorización de SSH sin tener que preocuparnos de lo seguros o no que sean los distintos protocolos que manejen nuestras aplicaciones.

User settingsTunneling settings

4 comentarios

  1. Jorge Martinez 13/08/2015
  2. jon 04/05/2016

¡Deja tu comentario!

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