Estoy clonando un repositorio git en un script como este:
git clone https://user:[email protected]/name/.git
Esto funciona, pero mi nombre de usuario y mi contraseña! ahora se almacenan en la url de origen en .git/config
.
¿Cómo puedo evitar esto, pero aún así hacerlo en un script (por lo que no hay entrada de contraseña manual)?
git remote set-url origin https://host.com/name/.git
Respuestas:
El método que uso es en realidad usar un en
git pull
lugar de un clon. El guión se vería así:Esto no almacenará su nombre de usuario o contraseña
.git/config
. Sin embargo, a menos que se tomen otras medidas, el nombre de usuario y la contraseña de texto sin formato serán visibles mientras el proceso se ejecuta desde comandos que muestran los procesos actuales (por ejemplops
).Una sugerencia adicional que haría (si no puede usar ssh) es usar un token OAuth en lugar de nombre de usuario / contraseña de texto sin formato, ya que es un poco más seguro. Puede generar un token OAuth desde la configuración de su perfil: https://github.com/settings/tokens .
Luego, usando ese token, el comando de extracción sería
fuente
ps
mientras se ejecuta el pull (al menos a menos que haya impedido que los usuarios vean los procesos de los demás)En mi opinión, la mejor solución es usar un
GIT_ASKPASS
ayudante personalizado y entregar la contraseña como otra variable de entorno. Entonces, por ejemplo, cree un archivogit-askpass-helper.sh
como:y luego correr
git clone https://username@hostname/repo
con variables de entornoGIT_ASKPASS=/path/to/git-askpass-helper.sh
yGIT_PASSWORD=nuclearlaunchcodes
.Esto tiene la ventaja de que la contraseña tampoco estará visible en la lista de procesos.
fuente
git pull
solución y le permitiría almacenar la contraseña de texto sin formato como un secreto en la herramienta de implementación automática que elija.Puede ingresar sus créditos de conexión en su
~/.netrc
archivo. Algo en la línea de:Solo asegúrate de cambiar ese archivo a 600. Si estás usando Windows, el siguiente enlace puede ser útil: /programming/6031214/git-how-to-use-netrc-file-on- windows-to-save-user-and-password
Personalmente, tengo tendencia a usar claves SSH para fines de autenticación (si está permitido, por supuesto).
fuente
Después de revisar docenas de publicaciones SO, blogs, etc., probé todos los métodos, y esto es lo que se me ocurrió. Cubre TODO.
Vea la hoja de referencia de credenciales y paquetes privados de Git
Estas son todas las formas y herramientas mediante las cuales puede autenticar de forma segura git para clonar un repositorio sin una solicitud de contraseña interactiva .
Las mejores opciones para almacenamiento sin texto sin formato
De lo que se pregunta aquí, ya sea SSH Keys,
GIT_ASKPASS
ogit credential store
usar el OS Keychain Manager podría ser la mejor opción.Dado que GIT_ASKPASS es probablemente el menos comprendido de los 3, detallaré eso aquí, y los otros están en la hoja de trucos.
GIT_ASKPASS
Cómo crear un
GIT_ASKPASS
script:Cómo usarlo:
El script recibe stdin en forma de:
El script recibe Git ENV como:
Más detalles en la hoja de trucos .
fuente