2008-09-19 8 views
6

Uso ssh-agent con claves protegidas con contraseña en Linux. Cada vez que inicie sesión en una determinada máquina, hago esto:ssh-agent con contraseñas sin generar demasiados procesos

eval `ssh-agent` && ssh-add 

Esto funciona bastante bien, pero cada vez que me conecto y hago esto, puedo crear otra ssh-agent. De vez en cuando, haré un killall ssh-agent para cosecharlos. ¿Existe una forma simple de reutilizar el mismo proceso de ssh-agent en diferentes sesiones?

+0

Vea también esta excelente respuesta: http://unix.stackexchange.com/a/90869/92102 –

Respuesta

5

echar un vistazo a llavero. Fue escrito por personas en una situación similar a usted. Keychain

3

¿Cuánto control tiene sobre esta máquina? Una respuesta sería ejecutar ssh-agent como un proceso de daemon. Se explican otras opciones en this web page, básicamente se prueba para ver si el agente está activo y luego se ejecuta si no lo está.

Para reproducir una de las ideas aquí:

SSH_ENV="$HOME/.ssh/environment" 

function start_agent { 
    echo "Initialising new SSH agent..." 
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" 
    echo succeeded 
    chmod 600 "${SSH_ENV}" 
    . "${SSH_ENV}" > /dev/null 
    /usr/bin/ssh-add; 
} 

# Source SSH settings, if applicable 

if [ -f "${SSH_ENV}" ]; then 
    . "${SSH_ENV}" > /dev/null 
    #ps ${SSH_AGENT_PID} doesn’t work under cywgin 
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { 
     start_agent; 
    } 
else 
    start_agent; 
fi 
0

Dependiendo de la carcasa que use, puede establecer diferentes perfiles para los shells de inicio de sesión y simples shells nuevos. En general, desea iniciar ssh-agent para shells de inicio de sesión, pero no para cada subshell. En bash, estos archivos serían .bashrc y .bash_login, por ejemplo.

La mayoría de los linux de escritorio en estos días ejecutan ssh-agent para usted. Que acaba de añadir su clave con ssh-add, y luego reenviar las llaves a sesiones ssh remotas mediante la ejecución de

 
ssh -A 
1

que puede hacer:

ssh-agent $SHELL 

Esto hará que ssh-agent para salir cuando el salidas de shell. Todavía no se compartirán entre sesiones, pero al menos desaparecerán cuando lo haga.

Cuestiones relacionadas