Agentes y forwarding
El agente SSH guarda claves descifradas en memoria para no teclear la passphrase en cada conexion. El agent forwarding permite usar tu clave desde un salto intermedio sin copiar la privada al bastion — con matices de seguridad.
ssh-agent
Linux / macOS
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add -lEn macOS, el Keychain puede persistir:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Windows
OpenSSH incluye el servicio agente:
Get-Service ssh-agent | Set-Service -StartupType Manual
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
ssh-add -lEn ~/.ssh/config:
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519Agent forwarding (ForwardAgent)
Flujo:
tu laptop --(clave en agente)--> bastion --(usa tu agente)--> host internoLa privada no se copia al bastion; el bastion pregunta a tu agente local.
Activacion puntual:
ssh -A ops@bastion.ejemplo.comO en config (solo hosts de confianza):
Host bastion
HostName bastion.ejemplo.com
User ops
ForwardAgent yesRiesgo
Si alguien con root en el bastion accede a tu socket de agente mientras tu sesion esta abierta, puede usar tus claves. Por eso:
- Activa
-Asolo cuando haga falta. - Prefiere
ProxyJumpsin forwarding cuando baste para llegar al destino. - No uses forwarding hacia maquinas compartidas o poco confiables.
Alternativa mas segura: ProxyJump
Para "entrar al interno a traves del bastion", normalmente no necesitas -A:
Host app-1
HostName 10.0.2.15
User deploy
ProxyJump bastionAqui la autenticacion al host interno la hace tu cliente local, no el bastion.
Usa forwarding cuando en el bastion debas, por ejemplo, git clone hacia un remoto que solo confia en tu clave.
X11 y otros forwardings
ssh -X usuario@host # X11 (Linux)Menos habitual hoy; para GUIs remotas suele preferirse RDP/VNC o herramientas dedicadas. Los tunnels TCP (capitulo 4) cubren el 90% de los casos (DB, paneles, APIs).
Comprobar el agente en remoto
Tras ssh -A bastion:
echo "$SSH_AUTH_SOCK"
ssh-add -lSi SSH_AUTH_SOCK esta vacio, el forwarding no llego.
Errores habituales
- Dejar
ForwardAgent yesenHost *. - Copiar la clave privada al bastion "para ir mas comodo".
- Asumir que
ProxyJumpy-Ason lo mismo. - Olvidar
ssh-addtras reiniciar (agente vacio).
Buenas practicas
- Passphrase + agente en local; nunca privadas sin proteger.
ProxyJumppor defecto;-Aexcepcional y temporal.- CI/CD: usar deploy keys o OIDC, no el agente de tu laptop.
- Revisar
ssh-add -lantes de sesiones sensibles.
Ejercicio
- Anade tu clave al agente y lista huellas con
ssh-add -l. - Conecta a un bastion sin
-AusandoProxyJumpa un host interno (o simulado). - Prueba una sesion con
-Ay compruebassh-add -len el bastion; luego desconecta.
Siguiente paso
Continua con SCP SFTP y tunnels.
