FreeSSHd: Un servidor SSH para Windows

A menudo nos encontramos con la necesidad de poder conectar con un servidor Windows, desde otro equipo, en las mismas condiciones que cuando lo hacemos entre servidores Linux usando SSH.

Normalmente esta necesidad podíamos cubrirla usando CygWin, pero nunca me ha terminado de convencer porque al final terminábamos convirtiendo nuestro servidor Windows en un servidor Linux al que le faltaban bastantes cosas, además del inconveniente de la doble gestión de cuentas de usuario, el lío con las barras separadoras de directorios ("/" y "\") según el comando que ejecutáramos, y por supuesto, el hecho de que muchos comandos no están al nivel de implementación de Linux y les faltan opciones... todo esto siempre me causó la impresión de que no estaba usando ni un Linux, ni un Windows, sino un refrito que funciona a medias. Nunca consideré CygWin como una opción seria para servidores en producción.

Afortunadamente, disponemos de alternativas libres para ello como FreeSSHd. Este es un simple servidor SSH y Telnet para equipos Windows, y permite hacer esto que reclamo: Instalarnos un servicio que escucha conexiones por el puerto 22 y/o 23 y al autenticarnos nos abre una consola del intérprete de comandos de Windows. Luego usaremos los mismos comandos que usaríamos frente a una ventana.

La instalación es bastante sencilla, y no ofrece ninguna complicación. Una vez lo hayamos instalado, tendremos que editar la configuración del servidor, y configurar qué puertos queremos escuchar: SSH y/o Telnet.


Además, debemos indicarle qué usuarios del equipo Windows le permitimos la conexión y con qué opciones.

Una vez realizada esta configuración básica, reiniciaremos el servicio, y ya podremos conectar mediante SSH como si se tratara de un servidor Linux. Observar que al conectar la consola no se limpia y el prompt de Windows se nos va al inicio del terminal sobreescribiendo lo que tuviéramos.

Para crear confianzas SSH mediante clave pública, tendremos que añadir las claves públicas, igual que hacemos con el fichero authorized_keys en Linux, pero al fichero %PROGRAMFILES%\FreeSSHd\LOGIN_USUARIO. El servicio va escribiendo un log en %PROGRAMFILES%\FreeSSHd\freesshd.log.

Una maravilla la verdad, simple y directo. El único inconveniente que le veo a este programa es que tendremos que usar SFTP desde Linux para poder copiar ficheros al equipo Windows: El comando SCP no nos funcionará :(.

4 comentarios:

Anónimo dijo...

Amigo gracias por el tutorial pero tengo un problema si sabes como hacerlo.

resulta que ingreso sin problema con el ssh por putty a mi equipo windows que tiene el freesshd hay ingraso al cmd de mi equipò remoto pero ahora quiero de hay saltar por ssh a otro equipo y como sabes windows no trae el servicio ssh en la consola como linux y estoy estandado...

salu2

Ignacio Barrancos dijo...

Gracias :)

Bueno, supongo que tendrás que instalar un cliente SSH en el equipo Windows, que te soporte la consola. PuTTY incluye PLINK.EXE que te permite esto que buscas:

plink -ssh root@OTRO_EQUIPO_REMOTO

Para generar las confianzas tendrás que usar PAGENT que es parte de PuTTY

Salu2

Anónimo dijo...

Hola, buenas tardes:

Una pregunta entiendo que todo lo que luego este pasando atravez de FreeSSHd por mucho que pongan un Sniffer les saldrá plano o que no podrán sacar ningún dato de todo lo que pasa por el servidor FreeSSHd? entiendo verdad?

Muchas gracias Ignacio Feliz Año

Ignacio Barrancos dijo...

Sip, así es: el tráfico se mostrará encriptado.