Cómo instalar OpenSSH Server en Windows 11

En PowerShell como administrador, ejecuta Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0, luego Start-Service sshd y Set-Service -Name sshd -StartupType Automatic. La instalación crea la regla de firewall OpenSSH-Server-In-TCP para el puerto 22. Las claves de las cuentas de administrador van en C:\ProgramData\ssh\administrators_authorized_keys, no en la carpeta del usuario.

Actualizada el .

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:

CuentaArchivo
Usuario estándarC:\Users\user\.ssh\authorized_keys
Miembro de AdministradoresC:\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

Más en SSH en cada sistema

Todas las guías