Me conecto a través de SSH desde una máquina donde se almacenan mis claves, reenvío a una segunda máquina, y luego trato de usar las claves desde tmux. Parece que "pierdo" el reenvío al entrar en tmux. ¿Cómo puedo "reenviar de nuevo" para que pueda usar mis claves desde tmux?
$ ssh [server] -o ForwardAgent=yes
$ git pull # Succeeds.
$ /bin/bash
$ git pull # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull # Permission denied (publickey)

Respuestas:
Si está adjuntando una sesión tmux ya existente, el shell no hereda las variables de entorno de su shell de inicio de sesión. En particular, no heredará las variables de entorno del agente ssh.
Prueba esta solución :
Cree este script y póngalo en $ HOME / .ssh / saveagent
Agréguelo a su script de inicio de shell. Por ejemplo, si usas bash:
Después de conectar el tmux, ejecute
. $HOME/.ssh/latestagentConsulte también ¿Cómo puedo ejecutar un script inmediatamente después de conectarme a través de SSH? y adjuntar a la sesión tmux y ejecutar un comando
fuente
saveagentguión debe ser:echo "export $var=\"$(eval echo '$'$var)\"". b: ellatestagentscript debe llamarse con ensourcelugar desh, por lo que establecer las variables afectará al shell de llamada. c: la invocaciónlatestagentautomática del script al adjuntar tmux se puede realizar mediante el método descrito aquí: unix.stackexchange.com/questions/86925/…A menos que desee obtener una secuencia de comandos que contenga todas las variables que necesita en cada shell que genere en cualquier nuevo shell generado por las mismas
tmuxsesiones de servidor, es probable que desee indicartmuxque coloque las variables en la sesión o entornos globales con elset-environmentcomando. Por ejemplo así (para bash):recuerde agregar el
-gindicador si también lo desea en otras sesiones y usarlo-t <session>si lo está ejecutando desde fueratmux.fuente
Después de leer las otras respuestas aquí, decidí copiar mi par de claves pública / privada en el servidor remoto, para no tener que preocuparme más por el reenvío de agentes.
fuente