SSH en Windows 11 sin PuTTY: OpenSSH nativo en 5 minutos

SSH en Windows 11 sin PuTTY: OpenSSH nativo en 5 minutos

Durante años, conectarse a un servidor Linux desde Windows significaba descargar PuTTY, configurar sesiones, exportar claves en su formato propietario: un ritual que todo sysadmin se sabe de memoria. Eso terminó en 2018, cuando Microsoft agregó OpenSSH como componente opcional de Windows 10. En Windows 11 ya viene preinstalado. Probablemente tengas un cliente SSH completo en tu máquina ahora mismo y no lo sepas.

¿Qué es el OpenSSH nativo de Windows?

Microsoft portó OpenSSH —el mismo paquete que corre en Linux y macOS— como función opcional de Windows 10 (a partir de la versión 1809, de octubre de 2018) y como componente preinstalado en Windows 11. Esto incluye:

  • ssh — cliente para conectarse a servidores remotos
  • ssh-keygen — generación de pares de claves RSA, ed25519, ECDSA
  • ssh-agent — gestor de claves en memoria
  • scp y sftp — transferencia segura de archivos
  • sshd — servidor SSH (deshabilitado por defecto, pero disponible)

Todo accesible directo desde PowerShell, el CMD o la Windows Terminal. Sin software de terceros.

Verificando (y activando) el cliente SSH

Abre PowerShell como administrador y ejecuta:

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

Si el resultado muestra State : Installed, ya tienes todo. Si aparece NotPresent, instálalo con:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

No es necesario reiniciar. Después de la instalación, el comando ssh queda disponible globalmente.

Primera conexión: accediendo a un servidor

La sintaxis es idéntica a la de Linux:

ssh [email protected]

En la primera conexión, SSH va a preguntar si confías en la clave del servidor (fingerprint). Confirma con yes; queda guardada en %USERPROFILE%\.ssh\known_hosts y no se te preguntará de nuevo.

Para especificar un puerto distinto del 22:

ssh -p 2222 [email protected]

Para autenticarte con una clave privada específica:

ssh -i C:\Users\Juan\.ssh\clave_vps [email protected]

Autenticación por clave: la forma correcta de hacer SSH

La contraseña es conveniente, pero una clave criptográfica es más segura y elimina el riesgo de fuerza bruta. Veamos cómo configurarla en dos pasos.

Generando el par de claves

En PowerShell (no hace falta ser admin):

ssh-keygen -t ed25519 -C "mi-pc-trabajo"

ed25519 es el algoritmo recomendado hoy: más rápido y con claves más pequeñas que RSA-4096, con seguridad equivalente. El parámetro -C es un comentario para identificar la clave después. El generador va a preguntar dónde guardarla (acepta el valor predeterminado: ~\.ssh\id_ed25519) y si quieres una passphrase; usa una, es lo que protege tu clave privada si el PC se ve comprometido.

Se crean dos archivos:

  • id_ed25519 — clave privada. Se queda en tu PC. Nunca la compartas.
  • id_ed25519.pub — clave pública. Va al servidor.

Copiando la clave pública al servidor

Linux tiene el comando ssh-copy-id; Windows no tiene un equivalente nativo. Usa este one-liner en PowerShell:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"

Esto agrega tu clave pública al archivo authorized_keys del servidor. En la próxima conexión, SSH autentica por la clave sin pedir contraseña (solo pedirá la passphrase de la clave, si definiste una).

Para buenas prácticas del lado del servidor —como deshabilitar la autenticación por contraseña después de configurar las claves— revisa nuestra guía de hardening SSH con sshd_config.

Atajos con el archivo de config

¿Qué es el archivo SSH config?

Es un archivo de texto en ~\.ssh\config que define atajos y configuraciones por host, eliminando la necesidad de memorizar IPs, usuarios y puertos. Una vez configurado, te conectas con solo ssh alias.

Crea o edita el archivo C:\Users\TuUsuario\.ssh\config:

Host vps-produccion
    HostName 198.51.100.42
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host dev-server
    HostName dev.empresa.com.br
    User juan
    IdentityFile ~/.ssh/clave_dev
    ForwardAgent yes

Con esto, ssh vps-produccion conecta directamente, sin necesidad de recordar IP, usuario o puerto. Cada bloque Host puede tener configuraciones independientes.

SSH Agent: sin escribir la passphrase todo el tiempo

Si definiste una passphrase en la clave, vas a tener que escribirla en cada conexión. El ssh-agent guarda la clave desbloqueada en memoria durante la sesión: la escribes una vez y él se encarga del resto.

En Windows, ssh-agent es un servicio. Para activarlo de forma permanente (PowerShell como admin):

Set-Service -Name ssh-agent -StartupType Automatic
Start-Service ssh-agent

Después, agrega tu clave al agente:

ssh-add ~/.ssh/id_ed25519

A partir de ahí, cualquier conexión SSH en la sesión actual usa la clave sin pedir passphrase. El servicio queda activo incluso después de reiniciar.

Transfiriendo archivos con SCP

scp funciona como un cp entre máquinas:

# Enviar archivo local al servidor
scp reporte.pdf [email protected]:/home/usuario/documentos/

# Descargar archivo del servidor
scp [email protected]:/var/log/nginx/access.log C:\Logs\

# Copiar directorio completo (-r)
scp -r ./proyecto [email protected]:/home/usuario/

sftp ofrece una interfaz interactiva estilo FTP, útil cuando quieres navegar por los directorios antes de decidir qué copiar. Ejecuta sftp [email protected] y usa comandos como ls, cd, get y put.

¿Vale la pena instalar Windows Terminal?

SSH funciona con normalidad en el CMD y en PowerShell, pero Windows Terminal facilita bastante el día a día: pestañas, múltiples perfiles, soporte de colores tipo terminal Linux, división de paneles. Está disponible en la Microsoft Store o vía winget:

winget install Microsoft.WindowsTerminal

Con Terminal configurado, puedes tener pestañas simultáneas: una conectada al servidor de producción, otra al de staging, sin ventanas extra de PuTTY desparramadas.

Resumen del flujo completo

  1. Confirma que OpenSSH está instalado (Get-WindowsCapability)
  2. Genera tu clave: ssh-keygen -t ed25519
  3. Copia la clave pública al servidor
  4. Configura el ~\.ssh\config con atajos
  5. Activa el ssh-agent como servicio automático
  6. Conéctate con ssh alias-del-host

La documentación oficial de Microsoft cubre OpenSSH en Windows en detalle, incluidos escenarios de servidor (habilitar sshd para recibir conexiones en el propio Windows). Para quien quiera ir más allá del lado Linux —configurar AllowUsers, MaxAuthTries y deshabilitar el login de root—, la guía de hardening de sshd_config cubre el paso a paso.

Comentarios