¿Te has pasado media tarde yendo físicamente al servidor para ejecutar un comando? SSH es la forma estándar y segura de administrar cualquier máquina Linux de forma remota. En esta guía instalamos el servidor OpenSSH y vemos las 4 formas de conectarnos desde el cliente, desde la más básica hasta la que usas en el día a día laboral.
🤔 ¿Qué vamos a conseguir?
- Un servidor con el servicio SSH funcionando y escuchando en el puerto 22.
- Capacidad de conectarte desde un cliente remoto a ese servidor de 4 formas distintas.
- Entender cómo funciona el modelo cliente/servidor de SSH para no volver a tocar la máquina físicamente.
🧰 Prerrequisitos
- Dos equipos Linux/Windows/WSL en la misma red (o uno solo con el cliente y el servidor en línea).
- Saber la dirección IP del servidor y el nombre de usuario con el que te vas a conectar.
- Conocimientos básicos de terminal: ejecutar comandos y usar editor de texto.
Si no tienes dos máquinas a mano, puedes practicar con dos contenedores Docker (más abajo) o conectarte desde tu equipo a sí mismo con
ssh usuario@localhost.
🛠️ Instalación del servidor SSH
Instalamos el servidor en el equipo al que queremos conectarnos (Debian/Ubuntu):
sudo apt update
sudo apt install openssh-server
Comprobamos que el servicio quedó arrancado y escuchando:
sudo systemctl enable --now ssh
sudo systemctl status ssh # estado del servicio
ss -tlnp | grep :22 # puerto 22 a la escucha
En Windows Server o WSL el cliente ya viene instalado (ssh); en WSL el servidor se instala igual con apt install openssh-server y se arranca con sudo service ssh start.
Verificación rápida de que el servidor responde (desde el propio servidor):
ssh usuario@localhost
🐳 Opción Docker: laboratorio para practicar
Si el sistema en el que pruebas no tiene servidor SSH instalable, levanta el laboratorio completo en un minuto:
docker run -d --name ssh-lab -p 2222:22 \
-e PASSWORD_ACCESS=true \
-p 22:22 linuxserver/openssh-server
Eso expone el puerto 2222 del contenedor; a partir de ahí conectas igual que a una máquina real (con el puerto de la forma 3). Más información en linuxserver/openssh-server.
🚀 Las 4 formas de conectarte por SSH
En todas ellas el formato es el mismo: ssh <usuario>@<dirección_ip> desde el equipo cliente.
Forma 1: conectarse con un usuario y una IP
La forma tradicional. Abre un terminal en el cliente y escribe:
ssh jorge@192.168.101.1
jorgees el usuario del servidor al que quieres entrar.192.168.101.1es la IP del servidor.
La primera vez SSH te preguntará si confías en el host (yes / no) y guardará su huella en ~/.ssh/known_hosts. Después te pedirá la contraseña del usuario y ya estás dentro de la terminal remota.

Forma 2: conectarse para ejecutar un solo comando
Si solo necesitas lanzar una acción concreta y desconectarte, pon el comando al final. SSH lo ejecuta en el servidor y cierra la sesión automáticamente:
ssh jorge@192.168.101.1 ls -l /home/jorge
ssh jorge@192.168.101.1 'df -h && systemctl is-active ssh'
Volumen de salida: ves el resultado del comando en tu terminal local sin entrar en la sesión interactiva. Es la base de la automatización con scp, rsync y scripts de despliegue.
Forma 3: señalizar un puerto personalizado
Si el servidor escucha en un puerto distinto del 22 (lo habitual en producción para esconder el servicio), lo indicas con -p:
ssh -p 2222 jorge@192.168.101.1
También puedes forzar un rango de IP en el cliente con -b o limitar la versión de protocolo con -v (modo verboso, muy útil para depurar).
Forma 4: con un fichero de configuración ~/.ssh/config
Cuando administras varios servidores, escribir usuario@IP cada vez cansa. Crea un fichero ~/.ssh/config en el cliente:
Host servidor
HostName 192.168.101.1
User jorge
Port 2222
Y ahora te conectas solo con la palabra que lo identifica:
ssh servidor
Ventajas: no memorizas IPs, puedes añadir IdentityFile (clave privada), ProxyJump (saltar por un bastión) o ServerAliveInterval (mantener la sesión viva). El resto de opciones están documentadas en OpenSSH — man ssh_config.
🧪 Comprobar que todo funciona
- Conexión interactiva: escribes
ssh jorge@192.168.101.1, introduces la contraseña y vesjorge@servidor:~$. - Comando remoto:
ssh jorge@192.168.101.1 hostnamedevuelve el nombre del servidor y sale con código 0. - Código de salida:
echo $?tras un comando remoto debe dar0; los errores devuelven 255 (SSH) o el código del comando remoto.
⚠️ Errores comunes
| Error | Causa | Solución |
|---|---|---|
Connection refused | El servicio ssh no está arrancado o no escucha | sudo systemctl restart ssh y verifica ss -tlnp | grep :22 |
Permission denied (publickey,password) | Usuario o contraseña incorrectos | Revisa el usuario (whoami en el servidor) y reinicia sudo systemctl restart ssh |
Host key verification failed | La huella del servidor cambió | ssh-keygen -R 192.168.101.1 y vuelve a conectar |
Connection timed out | Firewall bloqueando el puerto 22 | Abre el puerto: sudo ufw allow 22/tcp |
ssh: Could not resolve hostname | IP mal escrita o DNS | Revisa la IP y que el servidor esté encendido |
🪜 Siguiente nivel
Esta guía te deja conectándote por contraseña. La escalera natural de SSH es:
- Clave pública/privada — olvídate de las contraseñas y entra solo con tu clave: Conexión mediante clave pública privada.
- Copiar archivos entre máquinas con
scpyrsync: Copiar archivos entre diferentes usuarios y máquinas. - Túneles y agentes — saltar por un servidor bastión, reenviar puertos y montar
sshfs. - Gestión multi-servidor con
~/.ssh/configytmuxpara mantener sesiones vivas.
