He visto muchos trucos para restablecer el contacto con el agente SSH de una sesión GUI desde las sesiones tmux (y de pantalla). Me pregunto si es posible desacoplarse de la GUI y generar un agente ssh exclusivamente para usarlo dentro de una sesión tmux determinada. ¿El propio agente tendría que "utilizar" una de las ventanas tmux para evitar que lo maten o es posible generar una en segundo plano que persista mientras la sesión esté activa?
Respuesta1
Bien, he investigado un poco más y debería poder conectarme fácilmente a cualquier SSH_AGENT que esté disponible cuando el terminal esté conectado. tmux ya proporciona la configuración clave "entorno de actualización", sin embargo, la pieza que falta es que los shells existentes no se actualizan mágicamente. Sin embargo, tmux rastrea las variables de entorno actualizadas, por lo que el script de actualización es mucho menos complicado que las pantallas:
# Sync the environment of an existing shell
#
# tmux already updates the environment according to
# the update-environment settings in the config. However
# for existing shells you need to sync from from tmux's view
# of the world.
function tmux_sync_env
{
external_env=`tmux showenv | grep -v "^-"`
export ${external_env}
}
De estocomprometerse
Respuesta2
Tuve que modificar el de @stsquadrespuesta. Me estaba fallando porque el export
comando no podía configurar la SSH_CONNECTION
variable.
Tuve que poner el valor de SSH_CONNECTION
entre comillas.
function tmux_sync_env
{
ssh_auth_sock=`tmux showenv | grep "^SSH_AUTH_SOCK"`
ssh_connection=`tmux showenv | grep "^SSH_CONNECTION"`
export ${ssh_auth_sock}
export "${ssh_connection}"
}
Respuesta3
Otra opción que encontré recientemente es la de Daniel Robbins.llaveroutilidad que ofrece una forma sencilla de volver a conectarse y tener un agente para todo el usuario/host en lugar de solo uno para toda la sesión.