¿Cuál es la mejor manera de iniciar ssh-agent con Cygwin?

¿Cuál es la mejor manera de iniciar ssh-agent con Cygwin?

Me gustaría ssh-agentcomenzar 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-F2una nueva ventana de terminal, se .bashrcejecuta y, por lo tanto, ssh-agentse 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_SOCKinformación SSH_AGENT_PIDdesde 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 environarchivo 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_SOCKvariable entre procesos, almacena la salida ssh-agenten un archivo y la obtiene nuevamente en cada shell.

información relacionada