Cómo configurar un servidor SSH en Windows usando OpenSSH

¿Intentas convertir tu equipo Windows en un servidor SSH de verdad? ¡Qué buena idea! El servidor OpenSSH integrado forma parte de Windows desde la versión 1803 en Windows 10, y también está disponible en Windows 11 y Server. Es curioso que Microsoft lo haya simplificado tanto ahora. Pero la cuestión es que configurarlo correctamente, garantizar su correcto funcionamiento y conectarlo de forma segura puede ser un poco complicado, sobre todo si es la primera vez. Esta guía explica los pasos, algunos errores comunes y los pequeños trucos para evitar frustraciones. Básicamente, podrás acceder a tu PC Windows por SSH igual que en Linux, solo que con una interfaz gráfica que simplifica la gestión de conexiones remotas.

Ya sea que intentes configurar esto para scripting remoto, administrar varios servidores o simplemente experimentar con acceso seguro, el objetivo es un servidor SSH confiable y funcional. Aprenderás a instalarlo, configurarlo, solucionar problemas y conectarte, además de algunos consejos para ajustar la configuración de seguridad. Una vez que todo esté configurado correctamente, obtendrás un shell seguro que realmente funciona sin complicaciones. Si es tu primera vez, no te preocupes: mucha gente encuentra problemas, pero la mayoría de los problemas tienen soluciones sencillas una vez que sabes dónde buscar.

Cómo solucionar problemas comunes con el servidor SSH integrado de Windows

Método 1: Instalación y verificación del servidor OpenSSH

Primero, asegúrate de tener el servidor OpenSSH instalado correctamente. Puedes instalarlo mediante PowerShell; créeme, este es el método más sencillo:

  • Abra una ventana de PowerShell elevada (ejecútela como administrador).
  • Ejecute este comando para buscar el paquete e instalarlo:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH. Server*' | Add-WindowsCapability -Online

Este comando obtendrá e instalará el paquete del servidor si aún no está instalado. Si su PC está *conectado*, debería descargarse e instalarse automáticamente. En algunas configuraciones, es posible que tenga que comprobar si se instaló correctamente: ejecute:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH. Server*'

Busca «Estado: Instalado». Si no es así, vuelve a ejecutar el comando o reinicia.

Alternativamente, puedes hacerlo a través del panel de Configuración:

  • Vaya a Configuración > Aplicaciones > Funciones opcionales > Agregar una función
  • Desplácese hacia abajo, busque OpenSSH Server y haga clic en Instalar.

Si no tienes conexión, la cosa se complica. Necesitarás la ISO de Feature on Demand para agregar la función manualmente: extrayendo el archivo CAB y luego usando PowerShell para instalarla desde una fuente local, como se muestra a continuación:

Add-WindowsCapability -Name OpenSSH. Server~~~~0.0.1.0 -Online -Source E:\FOD

Sí, es un rollo, pero funciona. Microsoft también ofrece instaladores MSI en su repositorio de GitHub, lo que a veces facilita las cosas:

https://github.com/PowerShell/Win32-OpenSSH/releases/

Una vez instalado, confírmelo con:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH. Server*'

y verifique si dice Estado: Instalado.

Método 2: Administrar el servicio SSH y la configuración del firewall

El servidor SSH instala dos servicios: sshd (su servidor) y ssh-agent, que gestiona las claves si utiliza autenticación de claves. Para que SSH funcione correctamente, debe configurar sshd para que se inicie automáticamente y luego iniciarlo manualmente:

Set-Service -Name sshd -StartupType 'Automatic' Start-Service sshd

El comando de inicio es la magia habitual de PowerShell. Si está solucionando problemas de conexión, compruebe que el puerto 22 esté escuchando con:

netstat -na | find ":22"

Y confirme que el Firewall de Windows no esté bloqueando el SSH entrante:

Get-NetFirewallRule -Name *OpenSSH-Server* | select Name, DisplayName, Enabled

Si la regla no está activa, actívala:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Según tu experiencia, no es raro que la regla del firewall no esté presente o esté deshabilitada, lo que bloquea las conexiones SSH como un muro de ladrillos. Además, comprueba que los ejecutables de OpenSSH estén en C:\Windows\System32\OpenSSH\. Sin los componentes, SSH simplemente no funcionará.

Método 3: Configuración de sshd_config y solución de problemas

El archivo de configuración principal es [nombre del archivo] %programdata%\ssh\sshd_config. Si tu conexión SSH no funciona, este es el primer lugar donde debes buscar. Puedes editarlo con el Bloc de notas o cualquier editor de texto:

start-process notepad C:\Programdata\ssh\sshd_config

Algunos ajustes comunes: si observa problemas relacionados con el acceso de los usuarios, intente agregar o ajustar directivas como:

AllowGroups sshadmins DenyGroups Administrators DenyUsers woshub\ [email protected]

Todo lo relacionado con permisos de usuario, reglas de denegación y grupos permitidos. Recuerde que las directivas se procesan en orden, por lo que las reglas de denegación suelen ir antes que las de permiso.

Hablando de cambios de puerto, si desea ejecutar SSH en un puerto no estándar (por ejemplo, por seguridad o simplemente por conflictos), cambie la directiva de puerto en sshd_config:

Port 2222

Después de cualquier cambio, reinicie sshd:

Restart-Service sshd

Y comprueba de nuevo si tu puerto está escuchando con netstat. A veces, basta con editar ese archivo para solucionar los problemas de conexión.

Método 4: Conexión y autenticación correctas

Una vez que su servidor esté activo, puede conectarse mediante el cliente SSH integrado de Windows o uno de terceros como PuTTY. Abra un símbolo del sistema y ejecute:

ssh username@hostname-or-ip

Donde «nombre de usuario» es su cuenta de Windows. Para cuentas de dominio, use:

[email protected]

o para el formato de dominio\usuario netbios:

woshub\max@hostname

En algunas configuraciones, podría ser útil el inicio de sesión único (SSO) con Kerberos, lo que significa que no necesita escribir su contraseña. Habilítelo GSSAPIAuthentication yesen sshd_configy luego conéctese con ssh -K hostname:

La primera conexión podría advertirle sobre la clave de host; acéptela. Después, aparecerá un indicador de shell y todos los comandos habituales funcionarán. Si prefiere usar PowerShell por defecto dentro de SSH, puede modificar el registro para que PowerShell sea su shell predeterminado:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Luego, vuelve a conectarte y verás un símbolo del sistema de PowerShell en lugar de CMD. No sé por qué funciona, pero ese pequeño ajuste del registro funcionó para muchos.

Método 5: Comprobación de registros y solución de problemas

De forma predeterminada, Windows registra los eventos SSH mediante ETW, no en archivos de texto sin formato. Para analizar los problemas de conexión, abra el Visor de eventos ( eventvwr.msc ) y vaya a:

  • Registros de aplicaciones y servicios > OpenSSH > Operacionales

Aquí verás eventos como:

EventID: 4 sshd: Accepted password for username from 192.168. X.X port 12345 ssh2

Si desea registrar SSH en un archivo para facilitar la resolución de problemas, deberá habilitar las directivas correctas en sshd_config:

SyslogFacility LOCAL0 LogLevel INFO

Luego, reinicia sshd y los registros deberían ir a C:\ProgramData\ssh\logs\sshd.log. Ten en cuenta que esto requiere configuración adicional, pero vale la pena si estás solucionando problemas de conexión o quieres obtener mejores registros.

La mayoría de las veces, los problemas se deben a que el servicio no se ejecuta, el firewall se bloquea o está mal configurado sshd_config. Si lo solucionas, SSH volverá a funcionar correctamente. Claro que Windows lo hace un poco más difícil que Linux, pero una vez que le coges el truco, es bastante manejable.

Resumen

Si se siguen correctamente todos los pasos anteriores, la mayoría de los problemas de conexión suelen resolverse por arte de magia, o al menos son más fáciles de solucionar. Es curioso la frecuencia con la que se pasa por alto el firewall o el inicio del servicio, así que compruébalo bien. Además, modificar la configuración sshd_configsuele solucionar problemas de acceso persistentes.

Ojalá esto le ahorre algunas horas a alguien. Cualquier otra cosa generalmente se reduce a ajustar permisos, puertos o reglas de firewall. No olvides que, a veces, reiniciar después de configurar todo ayuda a limpiar los servicios o cachés de red bloqueados.

Resumen

  • Asegúrese de que el servidor OpenSSH esté instalado y habilitado.
  • Configure el servicio sshd para que se inicie automáticamente y confirme que se esté ejecutando.
  • Verifique las reglas de Firewall de Windows para el puerto de entrada 22 (o su puerto personalizado).
  • Edite sshd_configpara ajustar la configuración de usuarios, grupos y puertos.
  • Utilice el cliente SSH integrado de Windows o Putty para conectarse y probar.
  • Consulte los registros del Visor de eventos si los problemas de conexión persisten.

Reflexiones finales

Todo el proceso puede ser un poco tedioso, sobre todo si Windows decide bloquear elementos que deberían estar abiertos, pero una vez activado, el acceso SSH se vuelve mucho más sencillo. Solo recuerda tener en cuenta la seguridad: no dejes abiertas las reglas predeterminadas a menos que sepas lo que haces. Ojalá que esto ayude a que alguien consiga que su servidor SSH sea estable y funcional en Windows.¡Mucha suerte!