Windows Server

OpenSSH en Windows Server: conexión SSH, autenticación con clave y transferencia SCP/SFTP

6 pasos 15 min de lectura 22 vistas 0
Contenido

Windows Server incluye la adaptación de OpenSSH Server desarrollada por Microsoft, por lo que puede administrar un equipo Windows igual que uno con Linux: ejecutar comandos de PowerShell por SSH, automatizar tareas desde scripts y copiar archivos de forma segura con scp o con clientes SFTP como WinSCP y FileZilla, sin abrir una sesión de Escritorio remoto. Esta guía explica cómo instalar e iniciar el servidor SSH en Windows Server 2019, 2022 y 2025, cómo establecer PowerShell como shell predeterminado, cómo configurar el inicio de sesión con clave para administradores, cómo cambiar el puerto y cómo transferir archivos.

Un servidor SSH en el puerto 22 atrae a los mismos bots que intentan adivinar contraseñas que en Linux. Use la autenticación con clave y desactive el inicio de sesión con contraseña (paso 4) o, como mínimo, restrinja el puerto 22 a sus propias direcciones IP en el firewall.

Paso 1: Instalar OpenSSH Server

Abra PowerShell como administrador. El siguiente comando muestra si el cliente y el servidor están instalados; en Windows Server 2025 el servidor suele estar ya presente y solo hay que habilitarlo.

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

# Install the server if its State is NotPresent
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

En Windows Server 2016, que no lo incluye, instale el paquete MSI de Win32-OpenSSH desde las versiones publicadas por Microsoft en el repositorio PowerShell/Win32-OpenSSH de GitHub.

Paso 2: Iniciar el servicio y comprobar el firewall

# Start sshd now and at every boot
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

# The installer normally creates an inbound rule for TCP 22; create it if it is missing
if (-not (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
}

Get-Service sshd
netstat -ano | findstr ":22"

Ahora conéctese desde su equipo con ssh [email protected] (Windows 10/11, macOS y Linux incluyen un cliente SSH) y escriba la contraseña de Administrator. De forma predeterminada, obtendrá un símbolo del sistema de cmd.exe.

Paso 3: Establecer PowerShell como shell predeterminado

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

A partir de ahora, las nuevas sesiones SSH se inician en PowerShell. Si instaló PowerShell 7, use en su lugar la ruta de pwsh.exe.

Paso 4: Iniciar sesión con claves SSH y desactivar las contraseñas

Para las cuentas del grupo Administradores (Administrators), OpenSSH para Windows lee las claves públicas de un único archivo compartido, C:\ProgramData\ssh\administrators_authorized_keys, y no de la carpeta .ssh del propio usuario. El archivo solo debe ser accesible para Administrators y SYSTEM; de lo contrario, sshd lo ignora.

# On your own computer: create a key pair if you do not have one yet
ssh-keygen -t ed25519

# On the server (PowerShell as Administrator): paste your PUBLIC key (id_ed25519.pub)
Add-Content -Path "C:\ProgramData\ssh\administrators_authorized_keys" -Value "ssh-ed25519 AAAA...your-key... you@laptop"
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

Pruebe el inicio de sesión con clave en una ventana nueva. Cuando funcione, abra C:\ProgramData\ssh\sshd_config en el Bloc de notas y establezca:

PubkeyAuthentication yes
PasswordAuthentication no
Restart-Service sshd

Mantenga abierta su sesión actual hasta confirmar que un nuevo inicio de sesión con clave sigue funcionando. Para los usuarios estándar (no administradores), coloque las claves en C:\Users\USERNAME\.ssh\authorized_keys.

Paso 5: Cambiar el puerto SSH (opcional)

# In C:\ProgramData\ssh\sshd_config set:  Port 2222
New-NetFirewallRule -Name 'OpenSSH-2222' -DisplayName 'OpenSSH Server 2222' `
  -Direction Inbound -Protocol TCP -LocalPort 2222 -Action Allow
Restart-Service sshd
Disable-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'   # close 22 after testing 2222

Para permitir SSH solo desde sus propias direcciones, añada -RemoteAddress 198.51.100.20 a la regla del firewall. Más información sobre las reglas del Firewall de Windows: cómo abrir y cerrar puertos en el Firewall de Windows.

Paso 6: Transferir archivos con scp y SFTP

# Upload a file to the Administrator desktop (use forward slashes in Windows paths)
scp .\site-backup.zip [email protected]:C:/Users/Administrator/Desktop/

# Download a folder recursively
scp -r [email protected]:C:/inetpub/wwwroot ./wwwroot-copy

# Interactive SFTP session
sftp -P 2222 [email protected]

Los clientes gráficos como WinSCP y FileZilla también funcionan: elija el protocolo SFTP, la IP y el puerto del servidor, y su clave o contraseña. Para archivos grandes, es mucho más rápido y confiable que copiar a través del portapapeles del Escritorio remoto.

Preguntas frecuentes

¿El inicio de sesión con clave sigue pidiendo la contraseña?

En las cuentas de administrador, la clave debe estar en administrators_authorized_keys con los permisos exactos del paso 4. Revise el registro en Visor de eventos → Registros de aplicaciones y servicios → OpenSSH → Operational (Event Viewer → Applications and Services Logs → OpenSSH → Operational); normalmente indica cuál es el problema, por ejemplo un propietario o unos permisos incorrectos.

¿Se agota el tiempo de espera de la conexión?

El servicio sshd no está en ejecución, falta la regla del firewall o se está conectando a un puerto equivocado. Ejecute Test-NetConnection 203.0.113.10 -Port 22 desde su equipo y Get-Service sshd en el servidor.

¿Puedo seguir usando el Escritorio remoto?

Sí. SSH y el Escritorio remoto funcionan en paralelo. Muchos administradores usan SSH para los scripts y las transferencias de archivos, y reservan el Escritorio remoto para las herramientas gráficas.

¿Sigue sin resolverlo después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico de IMIDC, disponible 24/7, le ayudará. Incluya la IP del servidor, la versión de Windows Server, el comando SSH que ejecutó y la salida completa del error (ejecute ssh -v para obtener más detalles) para que podamos localizar el problema más rápido.

¿Fue útil la respuesta?

Tutoriales relacionados