−25%

en Windows con pago anual, hasta el 31/10. Ver planes

EQVPS
Empezar

Cómo instalar OpenSSH Server en Windows Server 2022 (acceso con clave, shell PowerShell)

Instala el OpenSSH Server integrado en un VPS con Windows Server 2022, deja PowerShell como shell predeterminada, entra con clave como Administrator y desactiva el acceso por contraseña. Incluye las dos trampas de Windows que hacen fallar el acceso con clave.

Windows Server 2022 incluye OpenSSH Server como característica opcional: sin instaladores de terceros y actualizado por Windows Update. Una vez activo, puedes ejecutar PowerShell por SSH, copiar archivos con scp y apuntar scripts o CI al servidor como a cualquier máquina Linux.

Todo lo de abajo se hizo en nuestra imagen de Windows Server 2022, en un PowerShell con permisos de administrador por RDP (cómo conectarte).

Primero, la red. En un plan Windows con NAT la única redirección de entrada va a RDP, así que SSH no es accesible desde internet. Para SSH desde fuera necesitas un plan con IPv4 propia, como Windows Small-IP. Con el puerto accesible, los pasos llevan unos cinco minutos.

1. Instala OpenSSH Server

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

El cliente ya viene instalado; el servidor aparece como NotPresent hasta que lo añades. En nuestro servidor la instalación tardó 28 segundos.

2. Arráncalo y haz que arranque con el sistema

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*

Al instalar la característica se crea la regla de firewall OpenSSH-Server-In-TCP (puerto 22, entrada, permitida), así que no hace falta añadir una.

3. Pon PowerShell como shell predeterminada

Por defecto, una sesión SSH cae en cmd.exe. Cámbiala a PowerShell:

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

Las conexiones nuevas reciben PowerShell 5.1 al momento; no hace falta reiniciar.

4. Añade tu clave para Administrator: el archivo en el que tropieza todo el mundo

Esta es la primera trampa de Windows. Para las cuentas del grupo Administrators, sshd no lee C:\Users\<name>\.ssh\authorized_keys. Lee un archivo compartido, C:\ProgramData\ssh\administrators_authorized_keys, y solo si nadie salvo Administrators y SYSTEM puede escribir en él:

$pub = 'ssh-ed25519 AAAA...your-public-key... you@laptop'
Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value $pub -Encoding ascii
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

-Encoding ascii también importa. En nuestra prueba, la misma clave guardada con Out-File (UTF-16, lo predeterminado en PowerShell 5.1) se rechazó con Permission denied (publickey). Desde tu equipo:

ssh Administrator@YOUR.SERVER.IP

Deberías obtener un prompt de PowerShell sin contraseña. Para usuarios que no son administradores funciona el habitual C:\Users\<name>\.ssh\authorized_keys.

5. Desactiva el acceso por contraseña: la segunda trampa

El cambio obvio, PasswordAuthentication no, no basta en esta versión. OpenSSH 8.1 sigue ofreciendo keyboard-interactive, que pide la misma contraseña de Windows. En nuestra prueba, un acceso sin clave seguía mostrando keyboard-interactive hasta que lo desactivamos también. Además, el ajuste debe ir antes del bloque Match Group administrators al final del archivo, o solo se aplica a los administradores. Esto coloca ambas líneas al principio:

$cfg = 'C:\ProgramData\ssh\sshd_config'
$lines = Get-Content $cfg | Where-Object { $_ -notmatch '^#?\s*(PasswordAuthentication|KbdInteractiveAuthentication|ChallengeResponseAuthentication)\s' }
Set-Content $cfg -Value (@('PasswordAuthentication no', 'ChallengeResponseAuthentication no') + $lines) -Encoding ascii
Restart-Service sshd

Mantén abierta tu sesión SSH actual y prueba desde una segunda terminal. Un intento solo con contraseña debería recibir ahora:

Permission denied (publickey).

Ese fue el resultado en nuestra prueba tanto para Administrator como para un usuario normal, mientras el acceso con clave seguía funcionando.

Qué puedes hacer con esto

  • Ejecutar un comando desde cualquier sitio: ssh Administrator@IP 'Get-Service sshd'.
  • Copiar archivos: scp .\app.zip Administrator@IP:C:/apps/.
  • Restringir el puerto a tu dirección con el mismo método que para RDP: Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10.

Qué plan elegir

SSH desde fuera necesita una IPv4 pública: Windows Small-IP (4 vCPU, 4 GB, 50 GB) cuesta $28/mes y Windows Medium-IP (6 vCPU, 6 GB) $36/mes. Windows es Server 2022 con tu propia licencia (BYOL explicado). Los cuatro planes están en la página de Windows VPS. Para que un programa siga funcionando tras desconectarte, consulta ejecutar un script 24/7 en Windows Server.

Preguntas frecuentes

¿Para qué SSH en Windows si ya hay RDP?

Los scripts y las herramientas hablan SSH. Con OpenSSH en el servidor puedes ejecutar comandos de PowerShell desde una máquina Linux o un trabajo de CI, copiar archivos con scp y dejar que la automatización gestione el servidor sin una sesión de escritorio.

Mi clave funciona para un usuario normal pero no para Administrator. ¿Por qué?

Para los miembros del grupo Administrators, OpenSSH de Windows ignora ~/.ssh/authorized_keys y lee C:\ProgramData\ssh\administrators_authorized_keys. Ese archivo solo debe poder escribirse por Administrators y SYSTEM; si no, sshd lo omite sin avisar.

¿Puedo llegar por SSH a un plan Windows con NAT?

Desde fuera, no. En un plan Windows con NAT el puerto externo personal se redirige a RDP (3389), y es la única redirección de entrada. Para SSH desde internet elige un plan Windows con IPv4 propia. Dentro del servidor, OpenSSH sigue funcionando para herramientas locales.

¿Qué versión de OpenSSH instala Windows Server 2022?

OpenSSH 8.1p1 for Windows. Por eso los ajustes de contraseña usan ChallengeResponseAuthentication y no el nombre más nuevo KbdInteractiveAuthentication.

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.