Instalación
Abre PowerShell con Ejecutar como administrador. Comprueba si ya está:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Si OpenSSH.Server~~~~0.0.1.0 muestra State : NotPresent, instálalo:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
El mínimo de Microsoft es Windows 10 compilación 1809 o Windows Server 2019, con PowerShell 5.1.
También puedes usar Configuración: busca Características opcionales en Inicio, elige Ver características y agrega OpenSSH Server. Luego abre la app Servicios, pon OpenSSH SSH Server en Automático e inícialo.
Inicia el servicio
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-Service sshd
Sin la segunda línea el servicio no vuelve a arrancar tras un reinicio.
Comprueba la regla del firewall
La instalación debería crear y habilitar una regla para el puerto 22. Esta es la comprobación de Microsoft, que además crea la regla si falta:
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
}
Pruébalo desde otra máquina Windows:
Test-NetConnection -ComputerName server -Port 22
Conectar
ssh user@server
Para una cuenta de dominio la forma es ssh domain\user@server. Por defecto obtienes cmd.exe. Para obtener PowerShell, ejecuta esto en el servidor:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Para entrar con clave necesitas antes un par de claves en tu ordenador. Consulta cómo generar una clave SSH en Windows.
Claves: qué archivo se lee
Aquí es donde fallan la mayoría de las configuraciones. El sshd_config predeterminado en Windows termina con:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Por tanto, el archivo depende de la cuenta:
| Cuenta | Archivo |
|---|---|
| Usuario estándar | C:\Users\user\.ssh\authorized_keys |
| Miembro de Administradores | C:\ProgramData\ssh\administrators_authorized_keys |
Una clave colocada en la carpeta del propio usuario se ignora para un administrador, y el inicio de sesión vuelve a pedir contraseña. Para comprobar si la cuenta es administradora:
Get-LocalGroupMember Administrators
Añadir una clave para un administrador
Ejecuta esto en el servidor en un PowerShell con permisos elevados, con tu propia clave pública en lugar del ejemplo:
Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value 'ssh-ed25519 AAAA... you@laptop'
icacls.exe "$env:ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
La segunda línea es importante: el archivo debe tener entradas de permisos solo para Administrators y SYSTEM. En un Windows que no esté en inglés el nombre del grupo es distinto, así que usa su SID: /grant "*S-1-5-32-544:F".
Añadir una clave para un usuario estándar
Ejecuta esto en el servidor como ese usuario:
New-Item -Force -ItemType Directory -Path $env:USERPROFILE\.ssh
Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value 'ssh-ed25519 AAAA... you@laptop'
No uses > ni >> para estos archivos. En Windows PowerShell 5.1 escriben UTF-16, que no es lo que el servidor espera. Para copiar una clave desde otro equipo, mira ssh-copy-id en Windows.
Cambiar ajustes y leer logs
El archivo de configuración es C:\ProgramData\ssh\sshd_config. Reinicia el servicio tras cualquier cambio:
Restart-Service sshd
Los logs van al Visor de eventos, en Registros de aplicaciones y servicios, OpenSSH, Operational. Mira ahí primero cuando falle un inicio de sesión, ya que el cliente solo dice Permission denied.
Ten en cuenta que PermitRootLogin no hace nada en Windows. Para impedir que los administradores inicien sesión, usa DenyGroups administrators.
Preguntas
¿Puedo iniciar sesión con una cuenta de Microsoft Entra ID?
No. La documentación de Microsoft dice que la autenticación con claves funciona con cuentas locales y de Active Directory, y que las cuentas de Entra no son compatibles con OpenSSH en Windows.
¿Es igual en Windows Server 2025?
OpenSSH ya viene instalado allí. Solo necesitas Start-Service sshd y Set-Service -Name sshd -StartupType Automatic, o el ajuste Remote SSH Access del Administrador del servidor.
Fuentes
- Primeros pasos con OpenSSH Server para Windows, Microsoft Learn
- Configuración de OpenSSH Server para Windows, Microsoft Learn
- Autenticación con claves en OpenSSH para Windows, Microsoft Learn
- sshd_config por defecto, fork de OpenSSH de Microsoft
- Sistemas de registro, wiki de Win32-OpenSSH