¿Cómo puedo saber si se ha establecido una conexión SSH con o sin reenvío de agente?
Estoy tratando de hacer lo siguiente:
ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something
y comparar resultados, pero solo puedo ver diferencias sutiles.

ssh-find-agentscript para encontrar y usar los agentes ssh existentes, ¡muy útil! El repositorio tiene algunos ejemplos en el archivo README. Es posible que pueda detectar si ssh-agent está habilitado así, junto con la inspección de los archivos de configuración SSH, en lugar de mirar la salida SSH.Respuestas:
Cuando el agente ssh hacia adelante está habilitado en el cliente (
ForwardAgent yesen~/.ssh/config) y también está habilitada en el servidor remotoAllowAgentForwarding yes, al conectarse con el servidor remoto la variable de entornoSSH_AUTH_SOCKdebe existir. Luego, si inicia sesión en otro servidor (su clave pública debe residir en este tercer servidor), no se le solicitará ninguna contraseña.Para aclarar:
fuente
ssh-addes lo que hizo el truco para mí. Llevaba meses trabajando sin saberlo. Luego cambié los escritorios de Unity a LXDE y el reenvío de claves del agente dejó de funcionar.ssh-addcada vez que abre una nueva ventana de consola. ¡Así que agregué esa línea de comando al final~/.bash_profiley ahora el reenvío del agente de autenticación funciona de manera transparente!ssh-agentconfigurado correctamente. Ver mah.everybody.org/docs/ssh"${SSH_AUTH_SOCK}"es un socket, puede probarlo conif [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fiVerificar el entorno
SSH_AUTH_SOCKes bueno para las conexiones ssh directas.Si usa proxies (
proxy_command), es posible que tenga una conexión que se vea así:local->hostA->hostB->hostC->hostDSi el reenvío de agente está activo en todos esos hosts,
SSH_AUTH_SOCKse establecerá y "contendrá" su clave sshlocalen todos los hosts.Ahora suponga que el reenvío de agente está desactivado
hostBpero activadohostC.SSH_AUTH_SOCKse activaráhostDpero en realidad estará "vacío". Por supuesto, el agente se reenvía, pero solo dehostCahostD. La cadena está rota.Ahora para verificar si realmente la clave está disponible
hostD, simplemente puede llamarssh-add. Saldrá con el código 1 en cualquier caso, pero si la clave no está disponible, lo mostrará enstderr:Para que pueda verificar el
SSH_AUTH_SOCKplus, asegúrese de quessh_addno tenga salida.fuente