SSH (Secure Shell)
Se lee en aproximadamente 5 minutos
Última actualización: 2026-04-14
Qué es SSH
SSH (Secure Shell) es un protocolo para conectarse de forma segura a computadoras remotas a través de la red. Cifra toda la comunicación, eliminando el riesgo de interceptación de contraseñas y comandos.
Antes de SSH se usaban Telnet y rlogin, que transmitían en texto plano sin cifrado. En 1995, Tatu Ylönen de Finlandia desarrolló SSH, que luego se convirtió en estándar de facto como OpenSSH.
Hoy SSH se usa en administración de servidores, operación de infraestructura cloud, acceso a repositorios Git y pipelines de despliegue automático. El puerto por defecto es 22.
Autenticación por clave pública
El método de autenticación más recomendado en SSH es la autenticación por clave pública. En lugar de contraseña, usa un par de claves matemáticamente relacionadas (pública y privada).
- Generación del par de claves: En el cliente, ejecutar
ssh-keygen. La clave privada se guarda en el cliente y nunca debe exponerse. - Registro de clave pública: Registrar la clave pública en
~/.ssh/authorized_keysdel servidor. - Proceso de autenticación: El servidor envía un desafío aleatorio; el cliente lo firma con la clave privada; el servidor verifica con la clave pública. La clave privada nunca viaja por la red.
El algoritmo recomendado actualmente es Ed25519. RSA también se usa ampliamente pero se recomienda 4096 bits o más.
Port forwarding
El port forwarding (tunneling) de SSH transfiere comunicaciones de otros protocolos de forma segura a través de la conexión cifrada SSH.
- Local forwarding: Reenvía conexiones a un puerto local al puerto especificado del servidor remoto vía túnel SSH. Ej:
ssh -L 3306:db-server:3306 bastionpara conectar a BD a través de bastión. Para servicios inaccesibles directamente por firewall. - Remote forwarding: Reenvía conexiones al puerto del servidor remoto hacia el cliente. Para exponer servidores detrás de NAT.
- Dynamic forwarding: Usa la conexión SSH como proxy SOCKS.
ssh -D 1080 servery configurar el navegador con proxylocalhost:1080. Protege comunicación en Wi-Fi público.
El port forwarding es útil cuando se necesita conexión segura a un servicio específico sin montar una VPN completa. La conexión SSH multi-hop vía bastión se configura fácilmente con ProxyJump en ~/.ssh/config.
Transferencia de archivos con SCP y SFTP
scp file.txt user@server:/path/. Simple pero no permite interrumpir/reanudar ni sincronizar directorios.FTP tradicional transmite contraseñas y archivos en texto plano. Se recomienda encarecidamente migrar a SFTP por seguridad.
Mejores prácticas de seguridad SSH
- Desactivar autenticación por contraseña:
PasswordAuthentication noen/etc/ssh/sshd_config. Solo permitir clave pública. Esto neutraliza la mayoría de ataques de fuerza bruta. - Prohibir login como root:
PermitRootLogin no. Entrar como usuario normal y escalar consudo. - Cambiar puerto: Cambiar del 22 a otro puerto. No es seguridad fundamental pero reduce drásticamente intentos de escaneo automático.
- Restringir IPs de origen: Limitar acceso al puerto SSH a IPs específicas con firewall. En cloud, usar security groups.
- Instalar Fail2ban: Bloquea automáticamente IPs con múltiples fallos de autenticación.
- Rotación de claves: Renovar claves SSH periódicamente. Eliminar claves de exempleados de
authorized_keysinmediatamente.
Conceptos erróneos comunes
- SSH es solo para administradores de servidores
- Desarrolladores usan SSH para Git (git@github.com:...), pipelines CI/CD para conectar a destinos de despliegue, científicos de datos para trabajar en servidores GPU remotos. Todos los profesionales de TI usan SSH cotidianamente.
- Cambiar el puerto SSH garantiza la seguridad
- El cambio de puerto reduce escaneos automáticos pero un port scan lo descubre fácilmente. Lo esencial es forzar autenticación por clave pública, desactivar contraseña y restringir IPs de origen.
- Una clave SSH creada sirve para siempre
- Las claves SSH también deben tener concepto de caducidad. Considerando filtración de claves privadas, empleados que dejan la empresa y obsolescencia de algoritmos, se recomienda rotación y auditoría periódica.