
Me gustaría ssh-agent
comenzar cuando inicie Cygwin, ya que uso ssh passthrough con frecuencia.
Intenté agregar:
eval `ssh-agent.exe`
a mi .bashrc
, pero cada vez que abro Alt-F2
una nueva ventana de terminal, se .bashrc
ejecuta y, por lo tanto, ssh-agent
se crean nuevos mensajes de correo electrónico, lo cual no es deseable y interfiere con el paso a través.
Luego intenté mover el comando eval a .bash_profile
, pero esto también genera el mismo problema: supongo que cada nueva ventana de terminal se considera un nuevo shell de inicio de sesión.
Una tercera opción es usar cygrunsrv
, pero la acabo de descubrir y no tengo claro cómo usarlo para este propósito específico y, quizás más importante, cómo transmitir la SSH_AUTH_SOCK
información SSH_AGENT_PID
desde donde se crea el servicio a cada nuevo shell creado. .
Cualquier sugerencia sobre la mejor manera de lograr este resultado (donde se ejecuta y espera un único agente ssh, y su información está inmediatamente disponible para ser utilizada en cualquier shell recién abierto) es bienvenida.
Respuesta1
Puedes ponerlo en tu .bashrc
, pero antes de volver a iniciarlo debes comprobar si ya está ejecutándose. Por ejemplo, puedes hacer
if [ -z "$SSH_AUTH_SOCK" ]; then
(umask 077; ssh-agent > "$HOME/.ssh/environment")
ssh-add
fi
como parte del proceso.
Also, if the agent is not running, you could first test if that environment file exists and source it like
environ="$HOME/.ssh/environment"
if [ -f "$environ" ]; then
. "$environ" >/dev/null
fi
if [ -z "$SSH_AUTH_SOCK" ] || ! ps -p "$SSH_AGENT_PID" | grep -q ssh-agent; then
(umask 077; ssh-agent > "$environ")
ssh-add
fi
Hay una respuesta larga que detalla gran parte de esto.aquíen el sitio de U&L.
Hago algo como esto, pero hago que el environ
archivo incluya el nombre de host actual, ya que mi directorio de inicio está en un recurso compartido de red y quiero ejecutar el agente en diferentes hosts simultáneamente.
Y para señalar explícitamente cómo esto responde a su pregunta sobre cómo pasar la SSH_AUTH_SOCK
variable entre procesos, almacena la salida ssh-agent
en un archivo y la obtiene nuevamente en cada shell.