Hace un tiempo en StackOverflow, hice esta pregunta sobre ssh-agent y crontab . Tengo una pregunta similar ahora sobre ssh-agent y screen en sistemas linux.
Entonces, en mi Mac, ssh-agent se inicia al iniciar el sistema, por lo que siempre está disponible para mí. Creo que sería cierto bajo mi linux (redhat el5 / fedora) si estuviera usando X-Windows. Sin embargo, esta es una máquina de servidor remoto y siempre estoy iniciando sesión a través de ssh.
Me encantaría tener las claves ssh configuradas correctamente para no tener que ingresar mi contraseña varias veces durante una actualización o confirmación de svn. Estoy feliz de escribir mi frase de contraseña una vez por sesión, y desaliento a nuestro equipo de tener claves ssh sin contraseña.
Por un breve momento brillante, parecía que hacer "eval` ssh-agent -s` "en mi .bash_profile, junto con un comando para matar al ssh-agent cuando me desconectaba, funcionaría. Sin embargo, hacemos un uso intensivo de la pantalla para administrar programas interactivos de larga duración y entornos de desarrollo. Si inicia y detiene ssh-agent como acabo de describir, entonces se elimina cuando sale del terminal, y las sub-sesiones de la pantalla que solían referirse a esa instancia de ssh-agent se abandonan.
Entonces ... ¿cómo puedo ser un usuario de la consola, que usa la pantalla, que usa una contraseña con sus teclas ssh, que no tiene que escribir la frase de contraseña constantemente?
fuente
/etc/conf.d/local
(o su equivalente) para cada usuario que use el agente, para iniciar unssh-agent
proceso separado por usuario. Si, como usted dice, no tiene una gran cantidad de usuarios, eso no sería tan malo. Planteas un buen punto (que olvidé considerar) sobre las sesiones de terminal que se adjuntan al agente; mira mi edición de la respuesta.Echa un vistazo a llavero . Hace todo lo anterior. Mire especialmente las opciones
--clear
y--timeout
.fuente
Un mejor enfoque es usar reenvío de agente ssh (
-A
opción). Esto le permite a la persona que usa ssh usar las claves del agente ssh que se ejecuta en la máquina de la que proviene, presumiblemente la estación de trabajo en la que realmente están sentados.fuente
para realizar un seguimiento del reenvío de agente ssh, encontrará que, de manera predeterminada, las credenciales ssh reenviadas no estarán disponibles para su sesión de pantalla una vez que cierre sesión, vuelva a iniciar sesión y vuelva a adjuntarla a su sesión.
Sin embargo, puede evitar esto haciendo que la pantalla establezca la variable de entorno SSH_AUTH_SOCK en algo conocido, y que esa ubicación conocida se actualice a su socket de autenticación actual.
Utilizo esta función de shell para volver a ingresar a la pantalla y arreglar el calcetín de autenticación ssh:
y tengo esto en mi .screenrc:
Espero que esto ayude.
fuente
Si te entendí bien, solo quieres una sesión de pantalla, que a veces desconectas y vuelves a conectar, pero nunca más quieres volver a ingresar las contraseñas para el agente ssh (tu contraseña de clave privada).
Creo que la forma más fácil es iniciar la pantalla, que iniciar ssh-agent con un sub shell y luego permanecer en ese sub shell. Es decir
fuente