Cliente SSH: guía práctica 2026

cliente-ssh
cliente-ssh

El cliente SSH en Linux es una herramienta esencial para conectarse de forma remota a otros equipos o servidores de manera segura. A través del protocolo SSH, es posible administrar sistemas, ejecutar comandos, transferir archivos y trabajar con servidores sin necesidad de estar físicamente delante de ellos.

En este artículo veremos qué es un cliente SSH, para qué se utiliza y cómo realizar conexiones remotas desde la terminal. También repasaremos conceptos básicos como usuario, dirección IP, puerto, autenticación y opciones habituales para trabajar de forma más cómoda y segura.

SSH (Secure Shell) es el estándar para conectarte de forma segura a máquinas remotas (Linux/Unix, routers, NAS, VPS, etc.). En esta guía nos centramos en el cliente SSH: cómo conectarte, usar claves SSH, organizar hosts en ~/.ssh/config, trabajar con ssh-agent, crear túneles y resolver errores comunes.

👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis

👉 También te dejo por aquí una guía de comandos Linux por categorías

Requisitos y conceptos básicos

  • Cliente: tu ordenador (desde donde ejecutas ssh).
  • Servidor: la máquina remota (a la que te conectas), normalmente con sshd.

En la mayoría de Linux y macOS, el cliente viene instalado (OpenSSH). En Windows 10/11 suele estar disponible como “OpenSSH Client”.

Comprobar e instalar el cliente SSH

Comprobar versión

En Linux/macOS:

ssh -V

En Windows (PowerShell):

ssh -V

Si el comando no existe, instala OpenSSH desde tu gestor de paquetes (Linux) o habilita la característica “OpenSSH Client” (Windows).

Conexión básica

La forma más común:

ssh usuario@servidor

Ejemplos:

ssh [email protected]
ssh [email protected]

Si el servidor escucha en un puerto distinto al 22:

ssh -p 2222 usuario@servidor

Consejo: cuando empieces a tener varios servidores, usa ~/.ssh/config para no repetir opciones en cada comando.

Primera conexión y known_hosts

La primera vez que conectas, SSH te mostrará la huella (fingerprint) de la clave del servidor y te pedirá confirmación. Si aceptas, se guarda en el archivo known_hosts:

  • Linux/macOS: ~/.ssh/known_hosts
  • Windows: C:\\Users\\TU_USUARIO\\.ssh\\known_hosts

Esto ayuda a prevenir ataques de tipo man-in-the-middle en conexiones futuras.

Autenticación: contraseña vs claves SSH

Puedes autenticarte con:

  • Contraseña: útil para salir del paso; peor para automatizar.
  • Claves SSH: recomendado (más seguro y más cómodo, y facilita desactivar la contraseña en el servidor).

Generar una clave (recomendado: ed25519)

ssh-keygen -t ed25519 -C "[email protected]"

Te pedirá dónde guardarla (por defecto ~/.ssh/id_ed25519) y una passphrase. Usar passphrase es buena práctica: si alguien obtiene tu clave privada, lo tendrá mucho más difícil.

Archivos típicos:

  • ~/.ssh/id_ed25519 (privada, no se comparte)
  • ~/.ssh/id_ed25519.pub (pública, se copia al servidor)

Copiar la clave pública al servidor

En Linux/macOS (si el servidor lo permite):

ssh-copy-id usuario@servidor

Con puerto distinto:

ssh-copy-id -p 2222 usuario@servidor

Alternativa manual (sin ssh-copy-id):

  1. Muestra tu clave pública:
cat ~/.ssh/id_ed25519.pub
  1. En el servidor, añade ese contenido al final de ~/.ssh/authorized_keys.
  2. Asegura permisos correctos (en el servidor):
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Usar una clave concreta al conectar

Si tienes varias claves o quieres especificar cuál usar:

ssh -i ~/.ssh/id_ed25519 usuario@servidor

~/.ssh/config: alias y opciones por host

Cuando usas SSH a diario, ~/.ssh/config es el mayor upgrade: alias legibles, opciones por host, claves específicas, jump hosts, etc.

Ejemplo básico:

Host mi-vps
  HostName 203.0.113.10
  User kamil
  Port 2222
  IdentityFile ~/.ssh/id_ed25519

Con eso conectas así:

ssh mi-vps

Varios hosts y patrones

Host *.lab
  User ubuntu
  IdentityFile ~/.ssh/id_ed25519

Host nas-casa
  HostName 192.168.1.50
  User admin

Opciones útiles para el cliente SSH

  • ServerAliveInterval 30 y ServerAliveCountMax 3: mantiene viva la sesión y detecta caídas.
  • IdentitiesOnly yes: usa solo las claves indicadas (evita el error “Too many authentication failures”).
  • ForwardAgent yes/no: reenvío del agente (útil, pero úsalo con cuidado).
  • ProxyJump: saltar por un bastion/jump host.

Ejemplo con jump host:

Host bastion
  HostName bastion.ejemplo.com
  User kamil

Host db-interna
  HostName 10.0.0.10
  User ubuntu
  ProxyJump bastion

Conexión:

ssh db-interna

ssh-agent: gestionar passphrase

Si tu clave tiene passphrase, ssh-agent puede recordarla durante la sesión (o durante un tiempo, según tu entorno).

Cargar una clave en el agente:

ssh-add ~/.ssh/id_ed25519

Ver claves cargadas:

ssh-add -l

Vaciar el agente:

ssh-add -D

Nota: en macOS, dependiendo de la versión y tu configuración, puedes integrar el agente con Keychain para mayor comodidad.

Túneles SSH (port forwarding)

Los túneles son uno de los superpoderes del cliente SSH: te permiten transportar puertos de forma segura.

Forward local (-L): traer un servicio remoto a tu máquina

Caso típico: en el servidor hay una base de datos escuchando solo en 127.0.0.1:5432, y quieres acceder desde tu PC sin exponerla a Internet.

ssh -L 5432:127.0.0.1:5432 usuario@servidor

Si no quieres abrir una shell (solo el túnel):

ssh -N -L 5432:127.0.0.1:5432 usuario@servidor

Forward remoto (-R): exponer un puerto de tu máquina en el servidor

Útil para demos o debugging. Ejemplo: tu PC tiene un servicio en localhost:3000 y quieres que el servidor lo vea en su localhost:3000:

ssh -R 3000:127.0.0.1:3000 usuario@servidor

Ojo: el servidor debe permitir AllowTcpForwarding y, según el caso, GatewayPorts.

SOCKS proxy (-D): proxy dinámico

Esto crea un proxy SOCKS (útil para navegar redes internas “como si” estuvieras dentro):

ssh -D 1080 usuario@servidor

Luego configura tu navegador/herramienta para usar SOCKS5 en 127.0.0.1:1080.

Copiar archivos: scp, sftp y rsync por SSH

Aunque el foco sea ssh, en la práctica vas a transferir archivos continuamente.

scp (copia simple)

Al servidor:

scp archivo.txt usuario@servidor:/ruta/destino/

Desde el servidor:

scp usuario@servidor:/ruta/origen/archivo.txt .

Con puerto distinto:

scp -P 2222 archivo.txt usuario@servidor:/ruta/destino/

sftp (sesión interactiva)

sftp usuario@servidor

Suele ser más cómodo para explorar y transferir varios archivos.

rsync por SSH

Sincronización incremental (solo copia cambios):

rsync -avz -e "ssh -p 2222" ./carpeta/ usuario@servidor:/ruta/carpeta/

Seguridad y buenas prácticas (cliente)

  • Usa claves ed25519 y una passphrase.
  • Cuida permisos: ~/.ssh (700) y claves privadas (600).
  • Evita ForwardAgent de forma global: actívalo solo cuando lo necesites.
  • Verifica fingerprints en entornos críticos (mejor por un canal secundario).
  • Si ya usas claves, considera desactivar contraseña en el servidor (mejora tu seguridad global).

Troubleshooting: errores típicos

Permission denied (publickey)

El servidor no aceptó tu clave (o no ofreciste la correcta). Checklist:

  1. ¿Usuario correcto?
  2. ¿La pública está en ~/.ssh/authorized_keys del usuario del servidor?
  3. ¿Permisos correctos en el servidor?
  4. ¿Estás usando el IdentityFile correcto?

Para ver qué pasa, usa modo verboso:

ssh -v usuario@servidor

Más detalle:

ssh -vvv usuario@servidor

REMOTE HOST IDENTIFICATION HAS CHANGED!

La clave del servidor cambió respecto a known_hosts. Puede ser normal (reinstalación) o peligroso (MITM). Si ya has verificado que el cambio es legítimo, borra la entrada antigua:

ssh-keygen -R servidor

Ejemplo:

ssh-keygen -R 203.0.113.10

Vuelve a conectar para aceptar la nueva huella.

Connection timed out / No route to host

Suele ser red, firewall o DNS. Revisa:

  • IP correcta
  • Puerto correcto (opción -p)
  • Firewall bloqueando
  • Servidor caído

Puedes probar conectividad al puerto (si tienes nc/netcat):

nc -vz servidor 22

Too many authentication failures

El cliente intenta demasiadas claves (por el agente) y el servidor corta. Soluciones típicas:

  • Especifica clave con -i.
  • En ~/.ssh/config, añade IdentitiesOnly yes e IdentityFile con la clave correcta.
Host mi-vps
  IdentitiesOnly yes
  IdentityFile ~/.ssh/id_ed25519

Chuleta rápida

ssh usuario@host
ssh -p 2222 usuario@host
ssh -i ~/.ssh/id_ed25519 usuario@host
ssh -N -L 5432:127.0.0.1:5432 usuario@host
ssh -D 1080 usuario@host
ssh -vvv usuario@host
ssh-keygen -t ed25519 -C "email"
ssh-copy-id usuario@host
ssh-add ~/.ssh/id_ed25519

Conclusión

El cliente SSH es una de las herramientas más importantes para cualquier usuario o administrador que trabaje con Linux. Permite acceder a servidores remotos de forma segura, ejecutar tareas de administración y gestionar sistemas desde cualquier lugar.

Comprender cómo funciona SSH, cómo conectarse a un servidor y cómo usar opciones básicas ayuda a mejorar la productividad y la seguridad en entornos Linux. Dominar el cliente SSH es un paso fundamental para avanzar en administración de sistemas, servidores, redes, DevOps y ciberseguridad.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *