Gratis Te mudamos el sitio y los correos sin cortes ni costo

0810 345 6377 ESEN, cambiar a inglés
InHosting
ESEN, cambiar a inglés

Servidores Linux

Conectarte por SSH desde Windows a tu VPS Linux, paso a paso

Por el equipo técnico de InHosting6 min de lectura

En pocas palabras

Windows 10 y 11 traen el cliente OpenSSH, así que no hace falta instalar nada: abrís PowerShell o Terminal y escribís ssh root@ seguido de la IP del VPS. La primera vez confirmás la huella del servidor y ponés la contraseña del correo de bienvenida. Después conviene crear una clave ed25519 con ssh-keygen, copiar la parte pública al servidor y desactivar el ingreso con contraseña. Para mover archivos está scp, y si la conexión falla, Test-NetConnection te dice en segundos si el problema es la red, el puerto o la clave.

Qué tener a mano

En los ejemplos usamos 198.51.100.20, una dirección reservada para documentación. Reemplazala por la de tu servidor.

  • La IP pública del VPS, que figura en el correo de bienvenida y en el detalle del servicio en el área de clientes.
  • El usuario: root en un VPS recién entregado, o el usuario con sudo que hayas creado después.
  • La contraseña inicial, o una clave que ya esté cargada en el servidor.
  • El puerto de SSH. Si no lo cambiaste, es el 22 y no hace falta escribirlo.

Si Windows dice que ssh no existe

Windows 10 trae el cliente instalado desde 2018, pero algunas imágenes corporativas lo quitan. Para comprobarlo y agregarlo, abrí PowerShell como administrador: la primera línea muestra si está instalado y la segunda lo agrega.

Get-WindowsCapability -Online | Where-Object Name -like "OpenSSH.Client*"
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

La primera conexión

Abrí Terminal (en Windows 11 viene de fábrica) o PowerShell y escribí:

ssh root@198.51.100.20
  1. Windows muestra la huella del servidor, en una línea que empieza con ED25519 key fingerprint is SHA256:, y pregunta si querés seguir. Escribí yes y Enter.
  2. Pegá o escribí la contraseña. No aparece nada mientras tipeás: es así a propósito.
  3. El prompt cambia a algo como root@vps:~#. Desde acá, todo lo que escribís corre en el servidor.
  4. Para cerrar, exit o Ctrl+D. Si SSH escucha en otro puerto, agregalo con -p, por ejemplo ssh -p 2222 root@198.51.100.20.

Una clave ed25519 en lugar de la contraseña

Con una clave, la contraseña deja de viajar y deja de poder adivinarse. Se genera un par: la privada queda en tu computadora, en C:\Users\tu-usuario\.ssh\id_ed25519, y la pública, el archivo que termina en .pub, se copia a cada servidor al que quieras entrar. El procedimiento desde Linux y macOS está en claves SSH para entrar sin contraseña.

Generala en PowerShell. Cuando pregunte la ruta, Enter; cuando pida una frase de paso, poné una: si alguien copia el archivo, sin la frase no le sirve. El comentario de -C te ayuda a saber después de qué equipo es cada clave.

ssh-keygen -t ed25519 -C "notebook-oficina"

Copiar la clave pública al servidor

Windows no trae ssh-copy-id. La misma tarea se hace leyendo el archivo .pub y mandándolo por la conexión SSH, que lo agrega al final de authorized_keys con permisos cerrados:

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@198.51.100.20 "umask 077; mkdir -p .ssh; cat >> .ssh/authorized_keys"
  1. Te pide la contraseña del servidor por última vez.
  2. Sin cerrar esa ventana, abrí otra y conectate de nuevo. Si te pide la frase de la clave y no la contraseña del servidor, funcionó.
  3. Para otros servidores, repetí el comando con cada IP: la misma clave pública sirve para todos.

Que Windows recuerde la frase de paso

Si le pusiste frase a la clave, el agente de SSH de Windows la guarda asociada a tu usuario y no te la pide en cada conexión. Viene desactivado: las dos primeras líneas lo habilitan (en PowerShell como administrador) y la tercera carga la clave, ya como usuario normal.

Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

Un alias para cada servidor

Con más de un servidor, recordar IPs, usuarios y puertos cansa. Creá el archivo config, sin extensión, en la carpeta .ssh de tu usuario, con un bloque por equipo. Después alcanza con ssh tienda o ssh pruebas:

Host tienda
    HostName 198.51.100.20
    User deploy
    IdentityFile ~/.ssh/id_ed25519
Host pruebas
    HostName 198.51.100.35
    User root
    Port 2222

Copiar archivos: scp, WinSCP y VS Code

El mismo cliente trae scp para mover archivos por la conexión cifrada, y respeta los alias del archivo config. La primera línea sube un archivo a la carpeta del usuario en el servidor; la segunda baja un registro a la carpeta donde estás parado:

scp .\respaldo.sql tienda:
scp pruebas:/var/log/nginx/error.log .
  • WinSCP hace lo mismo con ventanas y arrastrar y soltar, y puede usar tu clave: si hace falta, la convierte al formato de PuTTY.
  • Visual Studio Code, con la extensión Remote - SSH, abre las carpetas del servidor como si fueran locales y lee tu config.
  • PuTTY sigue siendo una opción en equipos viejos. Necesita la clave en formato .ppk, que PuTTYgen genera desde la tuya con Conversions › Import key.

Cerrar el ingreso con contraseña

Con la clave andando, lo siguiente es que el servidor no acepte más contraseñas: es la puerta que los bots prueban todo el día. En Debian 12 y 13, Ubuntu 24.04 y AlmaLinux 9 y 10, el archivo principal incluye primero lo que haya en /etc/ssh/sshd_config.d/, y SSH se queda con el primer valor que encuentra. Un archivo cuyo nombre empiece con 00 gana sobre cualquier otro que haya dejado la imagen del sistema.

Hacelo como root o con sudo desde la sesión que ya tenés abierta, y no la cierres hasta probar una conexión nueva. sshd -t valida la sintaxis y sshd -T muestra el valor que efectivamente quedó. El servicio se llama ssh en Debian y Ubuntu, y sshd en AlmaLinux. Para frenar además a los que prueban usuarios y claves, sumá firewall y fail2ban.

printf "PasswordAuthentication no\nKbdInteractiveAuthentication no\n" > /etc/ssh/sshd_config.d/00-solo-claves.conf
sshd -t && sshd -T | grep -Ei "passwordauth|kbdinteractive"
systemctl reload ssh      # en AlmaLinux: systemctl reload sshd

Cuando no conecta: qué dice cada error

Antes de tocar nada, averiguá si el puerto responde. PowerShell lo prueba sin SSH de por medio:

Test-NetConnection 198.51.100.20 -Port 22
Lo que vesQué pasaQué probar
TcpTestSucceeded : False, o ssh espera y termina en timed outLa conexión no llega: IP mal escrita, VPS apagado o un firewall que la descartaRevisá la IP y el estado del servicio en el área de clientes; probá desde otra red
Connection refusedEl servidor contesta, pero nada escucha en ese puertoConfirmá el puerto; si tocaste la configuración, puede que SSH no haya arrancado
Permission denied (publickey)El servidor ya no acepta contraseña y tu clave no coincideConectate con ssh -v para ver qué clave ofrece; revisá el usuario y authorized_keys
Permission denied, please try againUsuario o contraseña incorrectosCuidado con los reintentos: con fail2ban instalado, te deja afuera un rato
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!La huella guardada no coincideSolo si reinstalaste: ssh-keygen -R con la IP. Si no, frená y consultá

Si el VPS dejó de responder por la red después de un cambio de configuración, escribinos por ticket con la hora y el último cambio que hiciste.

Preguntas frecuentes

¿Qué clave conviene: ed25519 o RSA?

ed25519, salvo que tengas que entrar a un equipo muy viejo que no la soporte. Es más corta, más rápida y tan segura como una RSA de 3072 bits. Si necesitás RSA, generala con ssh-keygen -t rsa -b 4096.

¿Y si mi VPS tiene Windows Server?

Ahí no se entra por SSH sino por Escritorio remoto (RDP), con el usuario Administrador y la contraseña del correo de bienvenida. La aplicación viene con Windows: buscala como Conexión a Escritorio remoto o escribí mstsc.

¿Uso la misma clave en la notebook y en la PC de escritorio?

Se puede copiar el archivo privado, pero es mejor una clave por equipo. Si perdés la notebook, borrás su línea de authorized_keys en cada servidor y la PC sigue entrando. El comentario que pusiste con -C te dice cuál es cuál.

¿Cómo entro si perdí la clave y ya desactivé las contraseñas?

Desde otra computadora que tenga una clave cargada, si la hay. Si no queda ninguna, abrí un ticket desde el área de clientes y lo vemos juntos.

Seguí leyendo

¿Preferís que lo veamos juntos? Te atiende una persona.

Si la guía no alcanza para tu caso, contanos qué necesitás: te ayudamos a elegir el plan, a migrar o a configurar tu servidor.

Hablar con un técnico