Ssh
This content is not available in your language yet.
6.3 SSH Profesional: Acceso Seguro y Gestión Remota
Sección titulada «6.3 SSH Profesional: Acceso Seguro y Gestión Remota»Introducción
Sección titulada «Introducción»-SSH (Secure Shell)* es el estándar de facto para la administración remota segura en sistemas Linux. Permite a los Sysadmins conectarse, ejecutar comandos, transferir archivos y automatizar tareas en servidores distribuidos de forma cifrada y autenticada.
En entornos de producción, una mala configuración de SSH es una de las principales puertas de entrada para ataques. Por ello, dominar SSH no solo implica saber conectarse, sino securizar, auditar y optimizar su uso en infraestructuras críticas.
Objetivos de aprendizaje
Sección titulada «Objetivos de aprendizaje»Al finalizar este capítulo serás capaz de:
- Comprender el funcionamiento interno de SSH.
- Configurar accesos seguros basados en claves.
- Gestionar conexiones remotas de forma eficiente.
- Transferir archivos con
scpyrsync. - Securizar el servicio SSH (
sshd). - Diagnosticar problemas de conexión.
Conceptos Teóricos
Sección titulada «Conceptos Teóricos»1. ¿Qué es SSH?
Sección titulada «1. ¿Qué es SSH?»SSH es un protocolo criptográfico que permite:
- acceso remoto seguro
- ejecución de comandos
- transferencia de datos
Funciona bajo el modelo cliente-servidor:
- ssh (cliente)
- sshd (servidor)
Puerto por defecto:
TCP 222. Autenticación
Sección titulada «2. Autenticación»SSH soporta dos métodos principales:
1. Contraseña
Sección titulada «1. Contraseña»- Simple pero inseguro.
- Vulnerable a ataques brute-force.
2. Clave pública/privada (recomendado)
Sección titulada «2. Clave pública/privada (recomendado)»- Mucho más seguro.
- Basado en criptografía.
Archivos clave:
~/.ssh/id_rsa→ clave privada~/.ssh/id_rsa.pub→ clave pública
3. Proceso de conexión SSH
Sección titulada «3. Proceso de conexión SSH»- Cliente inicia conexión.
- Intercambio de claves.
- Verificación del servidor (known_hosts).
- Autenticación.
- Sesión cifrada.
4. Archivos importantes
Sección titulada «4. Archivos importantes»- /etc/ssh/sshd_config → configuración del servidor
- ~/.ssh/authorized_keys → claves permitidas
- ~/.ssh/known_hosts → servidores conocidos
Laboratorio Práctico
Sección titulada «Laboratorio Práctico»Escenario
Sección titulada «Escenario»Quieres securizar el acceso a un servidor:
- eliminar acceso por contraseña
- usar claves SSH
- endurecer configuración
Parte 1: Generación de claves
Sección titulada «Parte 1: Generación de claves»ssh-keygen -t ed25519 -C "admin@empresa"Explicación
Sección titulada «Explicación»-t ed25519→ algoritmo moderno y seguro.-C→ comentario identificativo.
Archivos generados:
~/.ssh/id_ed25519~/.ssh/id_ed25519.pubParte 2: Copiar clave al servidor
Sección titulada «Parte 2: Copiar clave al servidor»ssh-copy-id usuario@servidorAlternativa manual:
cat id_ed25519.pub | ssh usuario@servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"Parte 3: Conexión sin contraseña
Sección titulada «Parte 3: Conexión sin contraseña»ssh usuario@servidorParte 4: Configuración del servidor (hardening)
Sección titulada «Parte 4: Configuración del servidor (hardening)»Editar:
sudo nano /etc/ssh/sshd_configConfiguración recomendada:
PermitRootLogin noPasswordAuthentication noPubkeyAuthentication yesPort 22Aplicar cambios
Sección titulada «Aplicar cambios»sudo systemctl restart sshNunca desactives autenticación por contraseña sin haber probado acceso por clave.
Parte 5: Transferencia de archivos
Sección titulada «Parte 5: Transferencia de archivos»scp archivo.txt usuario@servidor:/tmp/RSYNC (más eficiente)
Sección titulada «RSYNC (más eficiente)»rsync -avz archivo.txt usuario@servidor:/tmp/Parte 6: Túneles SSH
Sección titulada «Parte 6: Túneles SSH»Ejemplo: forward local
ssh -L 8080:localhost:80 usuario@servidorAccedes a:
http://localhost:8080Parte 7: Configuración cliente SSH
Sección titulada «Parte 7: Configuración cliente SSH»Editar:
nano ~/.ssh/configEjemplo:
Host prod HostName 192.168.1.10 User admin IdentityFile ~/.ssh/id_ed25519 Port 22Uso:
ssh prodErrores Comunes y Troubleshooting
Sección titulada «Errores Comunes y Troubleshooting»1. Permission denied (publickey)
Sección titulada «1. Permission denied (publickey)»-Causas:*
- clave no copiada
- permisos incorrectos
Solución:
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys2. Connection refused
Sección titulada «2. Connection refused»systemctl status sshServidor SSH no activo.
3. Timeout de conexión
Sección titulada «3. Timeout de conexión»- Firewall bloqueando puerto 22.
- IP incorrecta.
4. Clave rechazada
Sección titulada «4. Clave rechazada»Ejecuta:
ssh -v usuario@servidorDebug detallado.
5. known_hosts conflict
Sección titulada «5. known_hosts conflict»ssh-keygen -R 192.168.1.10Buenas Prácticas (Nivel Senior)
Sección titulada «Buenas Prácticas (Nivel Senior)»1. Deshabilitar root
Sección titulada «1. Deshabilitar root»PermitRootLogin no2. Cambiar puerto SSH
Sección titulada «2. Cambiar puerto SSH»Port 2222Reduce ruido de ataques automatizados.
3. Restringir acceso por IP
Sección titulada «3. Restringir acceso por IP»AllowUsers [email protected].*4. Fail2Ban
Sección titulada «4. Fail2Ban»Protege contra brute-force:
apt install fail2ban5. Uso de claves modernas
Sección titulada «5. Uso de claves modernas»Preferir:
ed255196. Auditoría de accesos
Sección titulada «6. Auditoría de accesos»journalctl -u ssh7. Agente SSH
Sección titulada «7. Agente SSH»Para evitar múltiples autenticaciones:
ssh-agent bashssh-add8. Seguridad avanzada
Sección titulada «8. Seguridad avanzada»Opciones en sshd_config:
PermitEmptyPasswords noMaxAuthTries 3LoginGraceTime 30Resumen y Siguiente Paso
Sección titulada «Resumen y Siguiente Paso»Has aprendido a usar SSH de forma profesional: autenticación con claves, securización del servicio, transferencia de archivos y diagnóstico de problemas. Este conocimiento es crítico para gestionar servidores remotos de forma segura y eficiente.
El siguiente paso es completar el dominio de red con herramientas de diagnóstico profundo:
➡️ 6.4 Diagnóstico de Red, donde aprenderás a identificar problemas complejos de conectividad, latencia y routing en entornos reales.
