Instalé openSSH como parte de la última distribución de cygwin. Mi objetivo es utilizar el agente ssh desde la consola de ventana nativa (cmd) para iniciar sesión sin contraseña en varias máquinas Linux.
Generé las claves y las cargué en los directorios apropiados en los hosts remotos y todo funciona bien.
El único problema que tengo es que cada vez que abro un nuevo cmd tengo que ejecutar 'ssh-add', ingresar la frase de contraseña y luego puedo iniciar sesión sin contraseña en los hosts remotos. ¿Hay alguna manera de superar este problema? La solución ideal sería ejecutar ssh-add sólo una vez.
Para su información: estoy abriendo el cmd como argumento para ssh-agent: 'ssh-agent cmd'
Respuesta1
De hecho, creé una herramienta llamada "ssh-agent-helper" que la invoca ssh-agent
y la hace disponible globalmente, para que pueda usarla ssh-add
o ssh
desde git
cualquier terminal, por ejemplo, CMD, Bash, PowerShell, etc., sin ninguna configuración.
Lo puedes encontrar aquí:https://github.com/raeesbhatti/ssh-agent-helper
Respuesta2
No podrá ejecutar ssh desde la ventana de comandos nativa. Necesitará ejecutar la "ventana" de Cygwin bash para poder ejecutar cualquiera de los binarios de Cygwin.
Dicho esto, en las "ventanas" de Cygwin bash, debe guardar la salida de ssh-agent en un archivo y luego generar ese archivo en cualquiera de los scripts de inicio de sesión donde desee utilizar las credenciales almacenadas en caché. En la primera "ventana", ejecute:
$ ssh-agent >your_save_file # Starts ssh-agent, saves shell variables
$ . your_save_file # Loads saved shell variables into current shell
$ ssh-add # Adds keys into ssh-agent
En cada uno de los demás, ejecuta:
$ . your_save_file
Todas las "ventanas" y procesos secundarios iniciados después de . your_save_file
ejecutar el comando podrán usar las credenciales almacenadas en caché en ssh-agent. Cada vez que se detenga o elimine el agente ssh, o después de reiniciar el sistema, deberá ejecutar el primer conjunto de comandos nuevamente. Si tiene dudas sobre si las credenciales almacenadas en caché están disponibles o no en un shell en particular, ejecute
$ ssh-add -l # Show list of loaded keys in ssh-agent