Quiero usar un push and pull automáticamente en GitExtension , sin ingresar mi usuario y contraseña en un aviso, siempre.
Entonces, ¿cómo puedo guardar mis credenciales en git?
Quiero usar un push and pull automáticamente en GitExtension , sin ingresar mi usuario y contraseña en un aviso, siempre.
Entonces, ¿cómo puedo guardar mis credenciales en git?
Respuestas:
correr
git config --global credential.helper store
entonces
git pull
proporcione un nombre de usuario y contraseña y esos detalles se recordarán más tarde. Las credenciales se almacenan en un archivo en el disco, con los permisos de disco de "solo lectura / escritura por el usuario" pero aún en texto sin formato.
Si quieres cambiar la contraseña más tarde
git pull
Fallará, porque la contraseña es incorrecta, git elimina el usuario ofensivo + contraseña del ~/.git-credentials
archivo, por lo que ahora vuelva a ejecutar
git pull
para proporcionar una nueva contraseña para que funcione como antes.
Puede usar el git config
para habilitar el almacenamiento de credenciales en git.
git config --global credential.helper store
Cuando ejecute este comando, la primera vez que extraiga o presione desde el repositorio remoto, se le preguntará sobre el nombre de usuario y la contraseña.
Posteriormente, para las comunicaciones consiguientes con el repositorio remoto, no tiene que proporcionar el nombre de usuario y la contraseña.
El formato de almacenamiento es un .git-credentials
archivo, almacenado en texto sin formato.
Además, puede usar otros ayudantes para git config credential.helper
, a saber, memoria caché:
git config credential.helper cache <timeout>
que toma una opción timeout parameter
, determinando por cuánto tiempo las credenciales se guardarán en la memoria Con el ayudante, las credenciales nunca tocarán el disco y se borrarán después del tiempo de espera especificado. El default
valor es900 seconds (15 minutes).
ADVERTENCIA : Si usa este método, las contraseñas de su cuenta git se guardarán en plaintext
formato, en el global .gitconfig file
, por ejemplo, en Linux será/home/[username]/.gitconfig
Si esto no es deseable para usted, use un ssh key
para sus cuentas en su lugar.
git config credential.helper cache
las contraseñas no se pueden guardar en un archivo, sólo se almacena en la memoria. Ver: git-scm.com/docs/git-credential-cache
Método recomendado y seguro: SSH
Crea una clave ssh Github. Vaya a github.com -> Configuración -> claves SSH y GPG -> Nueva clave SSH. Ahora guarde su clave privada en su computadora.
Luego, si la clave privada se guarda como id_rsa en el directorio ~ / .ssh / , la agregamos para la autenticación como tal:
ssh-add -K ~/.ssh/id_rsa
Un método más seguro: almacenamiento en caché
Podemos usar git-credential-store para almacenar en caché nuestro nombre de usuario y contraseña por un período de tiempo. Simplemente ingrese lo siguiente en su CLI (terminal o símbolo del sistema):
git config --global credential.helper cache
También puede establecer el período de tiempo de espera (en segundos) como tal:
git config --global credential.helper 'cache --timeout=3600'
Un método aún menos seguro
Git-credential-store también se puede usar, pero guarda las contraseñas en un archivo de texto plano en su disco como tal:
git config credential.helper store
Respuesta desactualizada: rápida e insegura
Este es un método inseguro para almacenar su contraseña en texto sin formato. Si alguien obtiene el control de su computadora, su contraseña se verá expuesta.
Puede configurar su nombre de usuario y contraseña de esta manera:
git config --global user.name "your username"
git config --global user.password "your password"
En Terminal, ingrese lo siguiente:
# Set git to use the credential memory cache
git config --global credential.helper cache
De forma predeterminada, Git almacenará en caché su contraseña durante 15 minutos.
Para cambiar el tiempo de espera predeterminado de la caché de contraseña, ingrese lo siguiente:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
De la Ayuda de GitHub
cache
parte con store
. Por lo tanto, el comando completo será: git config --global credential.helper store
. Tenga en cuenta que esto almacenará su contraseña en un archivo de texto abierto (sin cifrado, por así decirlo).
--timeout
parámetro?
Puede editar el ~/.gitconfig
archivo para almacenar sus credenciales
sudo nano ~/.gitconfig
Que ya debería tener
[user]
email = your@email.com
user = gitUSER
Debe agregar al final de este archivo.
[credential]
helper = store
La razón por la que recomiendo esta opción es porque es global y si en algún momento necesita eliminar la opción, sabe a dónde ir y cambiarla.
SÓLO USE ESTA OPCIÓN EN SU COMPUTADORA PERSONAL.
Entonces cuando tiras | clon | ingrese su contraseña de git, en general, la contraseña se guardará ~/.git-credentials
en el formato
https://GITUSER:GITPASSWORD@DOMAIN.XXX
DONDE DOMINIO.XXX PODRÍA ESTAR GITHUB.COM | BITBUCKET.ORG | OTRO
Ver documentos
Simplemente ponga sus credenciales en la URL de esta manera:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Puede almacenarlo así:
git remote add myrepo https://Userna...
... ejemplo para usarlo :
git push myrepo master
Ahora eso es para enumerar los alias de url:
git remote -v
... y que el comando para eliminar uno de ellos:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, no ssh
, por lo que una solución como esta puede ser útil allí. Tenga en cuenta también que puede usar un token oauth, que es marginalmente más seguro que su contraseña de GitHub.
Para la configuración global, abra el terminal (desde cualquier lugar) ejecute lo siguiente:
git config --global user.name "your username"
git config --global user.password "your password"
Por eso, cualquier repositorio de git local que tenga en su máquina usará esa información.
Puede configurar individualmente para cada repositorio haciendo:
ejecuta lo siguiente:
git config user.name "your username"
git config user.password "your password"
Afecta solo a esa carpeta (porque su configuración es local).
--local
etiqueta pero nuevamente no pasa nada
Puede usar git-credential-store para almacenar sus contraseñas sin cifrar en el disco, protegidas solo por los permisos del sistema de archivos.
Ejemplo
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
Puede verificar las credenciales almacenadas en el archivo ~/.git-credentials
Para obtener más información, visite git-credential-store - Ayudante para almacenar credenciales en el disco
Estará más seguro si usa la autenticación SSH que la autenticación de nombre de usuario / contraseña.
Si está utilizando una Mac, la autenticación de cliente SSH está integrada en el llavero de MacOS. Una vez que haya creado una clave SSH, escriba en su terminal:
ssh-add -K ~/.ssh/id_rsa
Esto agregará la clave privada SSH al llavero MacOS. El cliente git usará ssh cuando se conecte al servidor remoto. Mientras haya registrado su clave pública ssh con el servidor, estará bien.
SSH
. Al usar la autenticación HTTP, alguien que robe las credenciales solo tendrá acceso a ellas GitHub/GitLab
. También los tokens están diseñados para tener una vida limitada.
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.
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 .
¿Quieres Just Works ™? Esta es la bala mágica de plata.
Obtenga su token de acceso (consulte la sección en la hoja de referencia si necesita las instrucciones de Github o Gitea para eso) y configúrelo en una variable de entorno (tanto para el desarrollo local como para la implementación):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Para Github, copie y ejecute estas líneas textualmente :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
Enhorabuena, ahora cualquier repositorio git de clonación de herramientas automatizadas no se verá obstaculizado por una solicitud de contraseña, ya sea usando https o cualquier estilo de ssh url.
¿No estás usando Github?
Para otras plataformas (Gitea, Github, Bitbucket), simplemente cambie la URL. No cambie los nombres de usuario (aunque sean arbitrarios, son necesarios para distintas entradas de configuración).
Compatibilidad
Esto funciona localmente en MacOS, Linux, Windows (en Bash), Docker, CircleCI, Heroku, Akkeris, etc.
Más información
Vea la sección ".gitconfig en lugar de" de la hoja de trucos.
Seguridad
Vea la sección "Seguridad" de la hoja de trucos.
git config --global credential."https://somegithost.com".username MyUserName
, que está en tu hoja de trucos, pero no en ningún otro lugar en este hilo de respuestas. Esa solución en particular no responde la pregunta del OP, pero sí la mía, ¡así que gracias!
En ese caso, necesita el asistente de credenciales git para decirle a git que recuerde su contraseña y nombre de usuario de GitHub mediante la siguiente línea de comando:
git config --global credential.helper wincred
y si está utilizando repositorio utilizando la clave SSH, entonces necesita la clave SSH para autenticarse.
Ninguna de las respuestas anteriores funcionó para mí. Seguía recibiendo lo siguiente cada vez que quería fetch
o pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Para Mac
Pude evitar que pidiera mi frase de contraseña:
vi ~/.ssh/config
UseKeychain yes
:wq!
Para ventanas
Pude hacer que funcionara usando la información en este stackexchange: https://unix.stackexchange.com/a/12201/348665
Además de editar el ~/.gitconfig
archivo, eso puede hacer si pregunta:
git config --local --edit
o
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
o
git config --global user.name 'your username'
git config --global user.password 'your password'
Su nombre de usuario y contraseña pueden usar algunos caracteres que romperían su contraseña si usa comillas dobles.
--local
o --global
significa que los parámetros de configuración se guardan para el proyecto o para el usuario del sistema operativo.
Solo usa
git config --global credential.helper store
y haga el git pull , pedirá nombre de usuario y contraseña, a partir de ahora no proporcionará ningún mensaje de nombre de usuario y contraseña, almacenará los detalles
.git-credentials
es donde se almacena su nombre de usuario y contraseña (token de acceso) cuando ejecuta git config --global credential.helper store
, que es lo que sugieren otras respuestas, y luego escriba su nombre de usuario y contraseña o token de acceso:
https://${username_or_access_token}:${password_or_access_token}@github.com
Entonces, para guardar el nombre de usuario y la contraseña (token de acceso):
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Esto es muy útil para el robot github, por ejemplo, para resolver las compilaciones automatizadas en cadena en el mismo repositorio de docker al tener reglas para diferentes ramas y luego activarlo presionando en post_push
hooker en el centro de docker.
Un ejemplo de esto se puede ver aquí en stackoverflow.
Una forma rápida de almacenar en caché las credenciales de git:
git config credential.helper 'cache' --timeout=10800
agradable y seguro
el tiempo de espera es en segundos.
Después de leer el hilo completo y experimentar con la mayoría de las respuestas a esta pregunta, finalmente encontré el procedimiento que me funciona. Quiero compartirlo en caso de que alguien tenga que lidiar con un caso de uso complejo, pero todavía no quiero pasar por el hilo completo y las páginas de manual de gitcredentials , gitcredentials-store, etc., como lo hice yo.
Encuentre a continuación el procedimiento que le sugiero SI (como yo) tiene que lidiar con varios repositorios de varios proveedores (GitLab, GitHub, Bitbucket, etc.) utilizando varias combinaciones diferentes de nombre de usuario / contraseña. Si, en cambio, solo tiene una única cuenta con la que trabajar, es mejor que emplee las soluciones git config --global credential.helper store
o git config --global user.name "your username"
etc. que se han explicado muy bien en las respuestas anteriores.
Mi solución:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
Nota : este comando crea un nuevo archivo llamado ".git_repo_credentials" en su directorio de inicio, en el que Git almacena sus credenciales. Si no especifica un nombre de archivo, Git usa los ".git_credentials" predeterminados. En este caso, simplemente emitirá el siguiente comando:
> git config credential.helper store
git config credential.*.username my_user_name
Nota : usar "*" generalmente está bien si sus repositorios son del mismo proveedor (por ejemplo, GitLab). Si, en cambio, sus repositorios están alojados por diferentes proveedores, sugiero configurar explícitamente el enlace al proveedor para cada repositorio, como en el siguiente ejemplo (para GitLab):
git config credential.https://gitlab.com.username my_user_name
En este punto, si emite un comando que requiere sus credenciales (por ejemplo git pull
), se le pedirá la contraseña correspondiente a "my_user_name". Esto solo se requiere una vez porque git almacena las credenciales en ".git_repo_credentials" y usa automáticamente los mismos datos en accesos posteriores.
Del comentario de rifrol, en Linux Ubuntu, de esta respuesta , así es como en Ubuntu:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Algunas otras distribuciones proporcionan el binario para que no tenga que construirlo.
En OS X, por lo general viene "integrado" con un módulo predeterminado de "osxkeychain" para que pueda obtenerlo de forma gratuita.
Consulte la documentación oficial de git:
Si utiliza el transporte SSH para conectarse a controles remotos, es posible que tenga una clave sin una frase de contraseña, lo que le permite transferir datos de forma segura sin escribir su nombre de usuario y contraseña. Sin embargo, esto no es posible con los protocolos HTTP: cada conexión necesita un nombre de usuario y contraseña. Esto se vuelve aún más difícil para los sistemas con autenticación de dos factores, donde el token que usa para una contraseña se genera aleatoriamente y no se puede evitar.
Afortunadamente, Git tiene un sistema de credenciales que puede ayudar con esto. Git tiene algunas opciones proporcionadas en el cuadro:
El valor predeterminado es no almacenar en caché en absoluto. Cada conexión le pedirá su nombre de usuario y contraseña.
El modo "caché" mantiene las credenciales en la memoria durante un cierto período de tiempo. Ninguna de las contraseñas se almacena en el disco y se eliminan de la memoria caché después de 15 minutos.
El modo "almacenar" guarda las credenciales en un archivo de texto sin formato en el disco y nunca caducan. Esto significa que hasta que cambie su contraseña para el host Git, no tendrá que volver a escribir sus credenciales. La desventaja de este enfoque es que sus contraseñas se almacenan en texto sin formato en un archivo plano en su directorio de inicio.
Si está utilizando una Mac, Git viene con un modo de "osxkeychain", que almacena las credenciales en el llavero seguro que está conectado a su cuenta del sistema. Este método almacena las credenciales en el disco y nunca caducan, pero están encriptadas con el mismo sistema que almacena los certificados HTTPS y los rellenos automáticos de Safari.
Si está utilizando Windows, puede instalar un asistente llamado "Git Credential Manager para Windows". Esto es similar al ayudante "osxkeychain" descrito anteriormente, pero utiliza el Windows Credential Store para controlar la información confidencial. Se puede encontrar en https://github.com/Microsoft/Git-Credential-Manager-for-Windows .
Puede elegir uno de estos métodos estableciendo un valor de configuración de Git:
$ git config --global credential.helper cache
$ git config --global credential.helper store