openssh: haga que ssh agregue claves al agente según sea necesario

25

Cuando ssh en un servidor y mi clave no está cargada en el agente, tengo que abortar, luego ejecutar ssh-add para obtener mi clave en el agente. Sin embargo, me gustaría que el comando ssh agregue la clave automáticamente si no está presente. es posible?

enigmáticoFísico
fuente
¿Tiene una clave para todos los hosts de destino o tiene claves diferentes con contraseñas diferentes? ¿Estás utilizando masilla de Windows o estás utilizando un sistema de ventanas basado en X en Linux o estás en una Mac?
Oteo
Estoy usando solo una tecla y openssh. ssh ya descubre la clave correcta y me pide la frase de contraseña, pero después de ingresarla, la clave no se guardará en el agente. Este comportamiento es el mismo en todos los sistemas POSIX y cygwin.
enigmaticPhysicist
¿Se ve similar? stackoverflow.com/questions/3466626/…
techraf
No, eso es diferente. Quiero ingresar la contraseña clave cada vez que se detiene el agente. Solo me gustaría que ssh agregue la clave al agente directamente según sea necesario, en lugar de tener que usar ssh-add primero.
enigmaticPhysicist

Respuestas:

35

La AddKeysToAgentopción hace lo que quiero. Puedo especificar -o AddKeysToAgent=yesen la línea de comando o agregar AddKeysToAgent yesuna línea sola en mi .ssh/config. Cualquiera de los dos funciona.

¡Parece que esta es una adición muy reciente a openssh, que aparece en la versión 7.2, fechada el 28/02/2016!

http://www.openssh.com/txt/release-7.2

Gracias OpenBSD! Lo usaré mucho .

enigmáticoFísico
fuente
.ssh / config: línea 3: opción de configuración incorrecta: AddKeysToAgent. ¿Alguna idea? Servidor Unix
trainoasis
Comprueba tu versión de openssh. $ ssh -V. Tiene que ser más nuevo o igual a 7.2.
enigmáticoFísico
De hecho ese fue el caso, gracias. Sin embargo, todavía pide contraseña después de volver a iniciar sesión. ¿Cómo automatizar git pull mediante script, por ejemplo, si siempre necesita ingresar pass? Y supongo que id_rsa sin contraseña no es una buena idea ...
trainoasis
¿Te refieres entre inicios de sesión ssh o entre inicios de sesión locales? Se supone que la contraseña se borra entre los inicios de sesión locales.
enigmáticoFísico
Cada vez que ejecuto un script localmente, debería enviar ssh allí y ejecutar git pull, etc., pero por supuesto no puede porque necesita contraseña para los comandos GIT (ssh funciona sin porque pass está en Keychain, pero los comandos allí piden pasar)
trainoasis