
Conexión SSH: qué necesitas y cómo iniciar sesión de forma segura
Aquí tienes una guía clara para iniciar sesión por SSH a un servidor Linux (Ubuntu/CentOS/Rocky). Incluye: datos que debes pedir/guardar, cómo conectarte desde macOS/Linux y Windows, uso de llaves, archivo ~/.ssh/config, bastion (ProxyJump) y resolución de errores comunes.
1) Datos que NECESITAS (pídelos al admin o proveedor):
• Host (IP pública o nombre DNS): ej. 203.0.113.10 o server.midominio.com
• Usuario del sistema: ej. ubuntu, rocky, deploy, root (mejor NO root)
• Puerto: por defecto 22 (a veces 2222/22022 por seguridad)
• Autenticación: contraseña o (recomendado) llave SSH (par privada+pública)
• Ruta de la llave privada: ej. ~/.ssh/id_ed25519
• Passphrase de la llave (si tiene)
• MFA/OTP si tu empresa lo exige
• (Opcional) Bastion/Jump host si el servidor no es accesible directamente
• IPs permitidas (si hay firewall o lista blanca)2) Generar una llave SSH (recomendado ED25519). Protege la privada con passphrase.
- terminalBASH
ssh-keygen -t ed25519 -C "tu.email@ejemplo.com" -f ~/.ssh/id_ed25519 # Ingresa una passphrase cuando te la pida 3) Copiar tu llave pública al servidor (macOS/Linux con acceso por contraseña).
- terminalBASH
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@server.midominio.com -p 22 Si no tienes ssh-copy-id, pega el contenido de tu id_ed25519.pub en ~/.ssh/authorized_keys del servidor con permisos 600 y carpeta 700.
4) Conectarte desde macOS/Linux (contraseña o llave). La primera vez te pedirá confirmar la huella (known_hosts).
- terminalBASH
ssh usuario@server.midominio.com # Con puerto custom: ssh -p 22022 usuario@server.midominio.com # Usando llave específica: ssh -i ~/.ssh/id_ed25519 usuario@server.midominio.com -p 22 5) Windows (PowerShell con OpenSSH nativo). También puedes usar PuTTY, pero OpenSSH es más directo.
- PowerShellBASH
ssh usuario@server.midominio.com -p 22 # Importar llave (si la generaste en Windows): suele estar en C:\\Users\\TUUSUARIO\\.ssh\\id_ed25519 6) (Opcional pero recomendado) Configurar ~/.ssh/config para simplificar comandos y forzar buenas prácticas.
- ~/.ssh/configBASH
nano ~/.ssh/config # Ejemplo: Host prod HostName server.midominio.com User deploy Port 22 IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes ForwardAgent no ServerAliveInterval 30 ServerAliveCountMax 4 Ahora conectas solo con:
ssh prod.7) Acceso vía bastion/jump host (cuando el servidor interno no es público).
- ~/.ssh/configBASH
# ~/.ssh/config Host bastion HostName bastion.midominio.com User admin IdentityFile ~/.ssh/id_ed25519 Host app-interna HostName 10.0.2.15 User deploy ProxyJump bastion IdentityFile ~/.ssh/id_ed25519 Conéctate con:
ssh app-interna(saltará por el bastion automáticamente).8) Reenvío de puertos (útil para DB/servicios internos). Úsalo solo temporalmente y con cuidado.
- terminalBASH
# Accede a PostgreSQL interno 5432 a través del servidor ssh -L 5432:127.0.0.1:5432 prod # Luego, en tu máquina local conecta a localhost:5432 9) Endurecimiento básico (seguridad):
• Desactiva login por contraseña y root remoto:PasswordAuthentication no,PermitRootLogin noen /etc/ssh/sshd_config.
• Usa fail2ban o similar y cambia el puerto si tu política lo permite.
• Limita IPs con firewall (ufw/firewalld/security-groups).
• Mantén llaves privadas con permisos 600 y carpeta ~/.ssh con 700.
• Activa 2FA/MFA si está disponible.10) Errores frecuentes y solución rápida:
•Permission denied (publickey): verifica que la pública esté en~/.ssh/authorized_keysdel usuario correcto y permisos (600 archivo, 700 carpeta).
•No route to host/Connection timed out: revisa IP/puerto, firewall/red, puerto diferente a 22.
• Cambiaste de IP/host y falla porREMOTE HOST IDENTIFICATION HAS CHANGED!: edita~/.ssh/known_hostsy elimina la línea del host afectado.
•Too many authentication failures: limita llaves conIdentitiesOnly yesyIdentityFileexplícito.
• En Windows, si la llave no carga: revisa permisos del archivo y ubicación (C:\Users\TUUSUARIO\.ssh).11) Buenas prácticas operativas:
• Registra en un gestor seguro (Vault/1Password) los datos: host, usuario, puerto, ruta de llave, passphrase, bastion.
• Usa nombres lógicos en ~/.ssh/config (dev, staging, prod).
• Evita compartir llaves; cada persona debe tener la suya y revocar al salir del equipo.
• Rota llaves periódicamente.Con esto puedes iniciar sesión SSH de forma segura y repetible. Si me dices tu escenario (bastion, puertos, nube, distro), te dejo un ~/.ssh/config exacto y un checklist de hardening para tu entorno.