Quiero ejecutar ssh-agent (con la opción de duración máxima), pero no agregar ninguna clave al inicio, sino agregarlas a pedido.
Como la primera vez que inicio sesión en algún servidor, debería pedir una frase de contraseña, la próxima vez (a menos que haya esperado más de una hora) debería conectarse limpiamente:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
No quiero recordar manualmente acerca de ejecutar 'ssh-add' cada vez. (por ejemplo, ingresó la frase de contraseña solo para ssh y "Oh, no lo ha recordado, necesita volver a escribir").
¿Cómo configurar ssh para agregar automáticamente la clave a ssh-agent si el usuario proporcionó la frase de contraseña?
Respuestas:
ssh admite agregar una clave al agente en el primer uso (desde la versión 7.2). Puede habilitar esa función poniendo lo siguiente en
~/.ssh/config
:Esto también funciona cuando se usan herramientas derivadas, como git.
Desde el registro de cambios 7.2 :
fuente
Podrías hacer trampa y poner algo como
alias ssh='ssh-add -l || ssh-add && ssh'
en tu.bashrc
/.profile
. Este primero se ejecutassh-add -l
, que puede devolver 0 (hay claves en el agente), 1 (sin claves) o 2 (sin agente en ejecución); si devuelve 0,ssh
se ejecutará; si 1,ssh-add
correrá y luegossh
; si 2,ssh-add
fallará yssh
no se ejecutará. Reemplace&&
con;
si deseassh
ejecutar incluso cuando no hay ningún agente ejecutándose.fuente
alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'
. Incluso podría poner eso en un bucle para todas sus claves ssh y generar alias. Un truco sucio, pero funciona.Hasta que ssh admita auto-call-ssh-add, agregué esto en mi
.bashrc
, según la propuesta de Kovensky:El alias se crea solo si no se agrega la identidad, y el alias se destruye a sí mismo una vez que se ejecuta.
De esta manera, el comando ssh normal se usa después de agregar la identidad.
fuente
ssh-add -t ...
), la clave agregada a ssh-agent puede desaparecer abruptamente, pero el alias se mantendrá ya que la clave todavía está en la memoria.Estoy usando la siguiente función de shell:
Primero resuelve la configuración del host al que estoy tratando de conectarme, luego agrega posibles claves para ese host al agente ssh si aún no se han agregado y finalmente se conecta al host. Estoy seguro de que se puede mejorar, así que estoy abierto a recibir comentarios.
fuente