Introducción a SSH
SSH (Secure Shell) es un protocolo de red que permite administrar sistemas remotos y transferir datos de forma cifrada.
Funcionalidades principales
- Administración remota: Control seguro de servidores locales o en la nube
- Transferencia de archivos: Uso de SFTP/SCP para intercambio cifrado de datos
- Túneles seguros: Creación de canales cifrados para acceso a servicios internos
Componentes de OpenSSH
ssh: Conexión remota segurascp: Copia segura de archivossftp: Transferencia interactiva de ficherosssh-keygen: Generación de claves criptográficasssh-copy-id: Distribución de claves públicas
Uso Básico
Conexión a servidores remotos
Conexión estándar
ssh usuario@servidor.example
ssh admin@192.168.100.50
Puerto personalizado
ssh -p 2222 desarrollador@servidor-dev.com
ssh -p 4567 sysadmin@10.0.0.5
Opciones de diagnóstico
ssh -v tecnico@servidor-backup.net
ssh -vvv auditor@seguridad.local
Configuración de red
ssh -4 soporte@ipv4-only.com
ssh -6 investigador@ipv6-lab.edu
ssh -o ConnectTimeout=15 -o ServerAliveInterval=45 usuario@servidor-inestable.org
Métodos de autenticación
Autenticación por contraseña
Método predeterminado que solicita credenciales tras iniciar conexión
Autenticación por clave pública
- Generar par de claves: ```
ssh-keygen -t ed25519 -f ~/.ssh/clave_desarrollo
- Instalar clave pública: ```
ssh-copy-id -i ~/.ssh/clave_desarrollo.pub usuario@destino.com
Reenvío de Puertos
Técnica para redirigir tráfico de red a través de túneles SSH cifrados.
Reenvío local
# Acceso a servidor web interno
ssh -N -L 9080:servidor-interno:80 puente@firewall-corporativo.com
# Conexión a base de datos remota
ssh -f -N -o ConnectTimeout=20 -L 5433:bd-produccion:5432 dba@servidor-sql.com
Reenvío remoto
# Exponer servicio local externamente
ssh -f -N -R 8085:localhost:3000 -o ExitOnForwardFailure=yes dev@servidor-publico.net
# Compartir entorno de desarrollo
ssh -N -R 9005:localhost:4200 -o ServerAliveInterval=35 frontend@colaboracion.dev
Reenvío dinámico
# Proxy SOCKS para navegación
ssh -f -N -C -D 1085 proxy@servidor-seguro.eu
# Proxy compartido en red local
ssh -f -N -o GatewayPorts=clientspecified -D 0.0.0.0:1085 vpn@acceso-remoto.biz
Configuraciones avanzadas
# Entorno de desarrollo completo
ssh -f -N \
-o TCPKeepAlive=yes \
-L 6379:redis-server:6379 \
-R 4200:localhost:4200 \
desarrollador@entorno-integrado.dev
# Acceso a múltiples servicios
ssh -f -N \
-o ConnectionAttempts=5 \
-L 8888:monitor:80 \
-L 15672:rabbitmq:15672 \
administrador@servidor-acceso.com
Consideraciones de seguridad
# Restringir acceso a interfaz local
ssh -L 127.0.0.1:3307:bd-sensible:3306 dba@bastion-host.com
# Permitir acceso desde red (usar con precaución)
ssh -L 0.0.0.0:8081:aplicacion-web:80 webadmin@dmz-server.org