GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Cómo crear un servidor SSH Windows

4 comentarios

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.


Error: Your Requested widget " ai_widget-6" is not in the widget list.
  • [do_widget_area above-nav-left]
    • [do_widget_area above-nav-right]
      • [do_widget_area footer-1]
        • [do_widget id="wpp-4"]
      • [do_widget_area footer-2]
        • [do_widget id="recent-posts-4"]
      • [do_widget_area footer-3]
        • [do_widget id="recent-comments-3"]
      • [do_widget_area footer-4]
        • [do_widget id="archives-4"]
      • [do_widget_area logo-bar]
        • [do_widget id="oxywidgetwpml-3"]
      • [do_widget_area menu-bar]
        • [do_widget id="search-3"]
      • [do_widget_area sidebar]
        • [do_widget id="search-4"]
        • [do_widget id="ai_widget-2"]
        • [do_widget id="categories-5"]
        • [do_widget id="ai_widget-3"]
        • [do_widget id="ai_widget-4"]
        • [do_widget id="ai_widget-5"]
      • [do_widget_area sub-footer-1]
        • [do_widget id="text-4"]
      • [do_widget_area sub-footer-2]
        • [do_widget_area sub-footer-3]
          • [do_widget_area sub-footer-4]
            • [do_widget_area upper-footer-1]
              • [do_widget id="search-2"]
              • [do_widget id="recent-posts-2"]
              • [do_widget id="recent-comments-2"]
              • [do_widget id="archives-2"]
              • [do_widget id="categories-2"]
              • [do_widget id="meta-2"]
            • [do_widget_area upper-footer-2]
              • [do_widget_area upper-footer-3]
                • [do_widget_area upper-footer-4]
                  • [do_widget_area widgets_for_shortcodes]
                    • [do_widget id="search-5"]
                    • [do_widget id="ai_widget-6"]
                  • [do_widget_area wp_inactive_widgets]
                    • [do_widget id="wpp-2"]
                    • [do_widget id="text-1"]
                    • [do_widget id="recent-posts-3"]
                    • [do_widget id="categories-3"]
                    • [do_widget id="archives-3"]
                    • [do_widget id="icl_lang_sel_widget-3"]

                  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

                   

                  Sobre el autor

                  Daniel López Azaña
                  Arquitecto de soluciones Cloud AWS & Linux Sysadmin Freelance

                  Emprendedor, generador de ideas y mente inquieta. Apasionado de las nuevas tecnologías, especialmente de los sistemas Linux y del software libre. Me gusta escribir además sobre actualidad tecnológica, Cloud Computing, AWSi, DevOps, DevSecOps, seguridad, desarrollo web y programación, SEO, ciencia, innovación, emprendimiento, etc.

                  DanielCómo crear un servidor SSH Windows

                  Artículos relacionados

                  4 comentarios

                  Unirte a la conversación
                  • Jorge Martinez - 13/08/2015 responder

                    Que tal, para solicitarte por favor asesoria acerca del servicio SFTP,

                    Habilite para windows el servicio SFTP con la IP interna y dentro de la empresa en donde laboro
                    no hay problema,

                    pero cuando desde otro lugar se quieren conectar , no se los permite.

                    Cuales son las consideraciones para que a traves de este servicio puedan entrar a mi servidor?

                    saludos y gracias por tu atencion.

                    Daniel - 05/05/2016 responder

                    Todo apunta a que se trata de un problema con un firewall intermedio o incluso con el propio firewall de Windows. Debes asegurarte de que el router/firewall de acceso a Internet de tu empresa redirige correctamente hacia tu servidor el tráfico con destino al puerto 22 de la IP pública de tu empresa. Si esto se hace correctamente puede ser que el firewall de Windows esté bloqueando el tráfico, ya que éste tendrá como IP de origen una dirección externa a tu red.

                  • jon - 04/05/2016 responder

                    Buenas,

                    He aplicado todos los pasos según has indicado, eligiendo la conexión de mi usuario «admin» con contraseña «admin» para el SSH.

                    Intento loguearme desde mi equipo Centos mediante el comando «ssh admin@192.168.100.202 2001″ siendo 2001 el puerto que he elegido para la conexión ssh y al introducir la contraseña me sale el error de que la estoy introduciendo mal…

                    ES raro…la comunicación la hace bien, no se donde puede estar el error.

                    Gracias,

                    saludos

                    Daniel - 05/05/2016 responder

                    Si has seguido todos mis pasos habrás deshabilitado la autenticación mediante contraseña (mira la 4ª captura de pantalla empezando por el final) para sólo permitir el acceso mediante clave pública. Si quieres introducir una contraseña debes habilitar la opción «Password authentication».

                  Deja una respuesta

                  Tu dirección de correo electrónico no será publicada.