es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reutilizando la frase de contraseña del SSH entre múltiples líneas de comandos.

Estoy utilizando NodeJS para ejecutar múltiples líneas de comandos de git. Actualizando submódulos, realizando pull en algunos proyectos, etc. Todo funciona, pero tengo un inconveniente. Cuando ejecuto dos líneas de comandos como esta:

const exec = util.promisify(require('child_process').exec);

await exec('cd my/project/path && git pull');
await exec('cd my/other/project/path && git pull');

Me veo obligado a ingresar mi frase de contraseña de SSH dos veces. Intenté await exec('cd my/project/path && git pull && cd my/other/project/path && git pull'); pero el resultado es el mismo (me pide la frase de contraseña dos veces).

¿Es posible utilizar el ssh-agent para mantener la frase de contraseña entre las dos líneas de comandos? ¿O alguna otra solución?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizar ssh-agent para conservar la frase de contraseña entre las dos líneas de comando. Puedes agregar tu clave SSH al agente ejecutando ssh-agent bash en tu terminal y luego ejecutando ssh-add seguido de la ruta de tu archivo de clave privada SSH. Una vez que la clave se haya agregado al agente, solo se te solicitará ingresar la frase de contraseña una vez y los comandos posteriores que utilicen esa clave no la requerirán de nuevo.

    Puedes modificar tu código de NodeJS para utilizar ssh-agent agregando la siguiente línea antes de la ejecución de tu comando:

    await exec('ssh-add ruta/a/tu/clave/privada && cd ruta/de/mi/proyecto && git pull');
    await exec('cd ruta/de/mi/otro/proyecto && git pull');
    

    Esto agregaría tu clave SSH al agente y luego ejecutaría tu primer comando (con el directorio cambiado y git pull). Los comandos posteriores utilizarán automáticamente la clave del agente. Ten en cuenta que deberás asegurarte de que el agente esté en ejecución antes de ejecutar tu código de NodeJS.

Comments are closed.