Pregunta ¿Hay alguna manera de saltear la escritura de contraseña al usar https: // en GitHub?
Recientemente cambié a la sincronización de mis repositorios a https: // en GitHub (debido a problemas con el firewall), y siempre solicita una contraseña. Solía ser que tenía una SSH certificado, y fue suficiente. ¿Hay alguna forma de eludir la contraseña en mi caso (usando http / https)?
1621
2018-03-17 17:47
origen
Respuestas:
Con Git versión 1.7.9 y posterior
Desde Git 1.7.9 (lanzado a finales de enero de 2012), hay un mecanismo ordenado en Git para evitar tener que escribir su contraseña todo el tiempo para HTTP / HTTPS, llamado ayudantes de credenciales. (Gracias a dazónico para señalar esta nueva característica en los comentarios a continuación).
Con Git 1.7.9 o posterior, puede usar uno de los siguientes credenciales de ayuda:
git config --global credential.helper cache
... que le dice a Git que mantenga su contraseña almacenada en la memoria (por defecto) durante 15 minutos. Puede establecer un tiempo de espera más largo con:
git config --global credential.helper "cache --timeout=3600"
(Ese ejemplo fue sugerido en el Página de ayuda de GitHub para Linux.) También puede almacenar sus credenciales permanentemente si así lo desea, consulte las otras respuestas a continuación.
La ayuda de GitHub también sugiere que si estás en Mac OS X y usas Homebrew Para instalar Git, puede usar el keystore de Mac OS X nativo con:
git config --global credential.helper osxkeychain
Para Windows, hay un ayudante llamado Git Credential Manager para Windows o wincred en msysgit.
git config --global credential.helper wincred # obsolete
Con Git para Windows 2.7.3+ (Marzo de 2016):
git config --global credential.helper manager
Para Linux, puedes utilizar gnome-keyring
(u otra implementación de keyring como KWallet).
Con las versiones de Git anteriores a 1.7.9
Con las versiones de Git anteriores a la 1.7.9, esta opción más segura no está disponible, y deberá cambiar la URL que su origin
usos remotos para incluir la contraseña de esta manera:
https://you:password@github.com/you/example.git
... en otras palabras, con :password
después del nombre de usuario y antes del @
.
Puede establecer una nueva URL para su origin
remoto con:
git config remote.origin.url https://you:password@github.com/you/example.git
Asegúrate de usar https
y debe tener en cuenta que si hace esto, su contraseña de GitHub se almacenará en texto claro en su .git
directorio, que obviamente es indeseable.
Con cualquier versión de Git (bueno, desde la versión 0.99)
Un enfoque alternativo es poner su nombre de usuario y contraseña en su ~/.netrc
archivo, aunque, al igual que con la conservación de la contraseña en la URL remota, esto significa que su contraseña se almacenará en el disco en texto plano y, por lo tanto, es menos segura y no se recomienda. Sin embargo, si desea tomar este enfoque, agregue la siguiente línea a su ~/.netrc
:
machine <hostname> login <username> password <password>
... reemplazando <hostname>
con el nombre de host del servidor, y <username>
y <password>
con tu nombre de usuario y contraseña Recuerde también establecer permisos restrictivos para el sistema de archivos en ese archivo:
chmod 600 ~/.netrc
Tenga en cuenta que en Windows, este archivo debe ser llamado _netrc
, y es posible que deba definir la variable de entorno% HOME% - para obtener más detalles, consulte:
2133
2018-03-17 17:54
También puede hacer que Git almacene sus credenciales permanentemente usando lo siguiente:
git config credential.helper store
Nota: Si bien es conveniente, Git almacenará sus credenciales en texto claro en
un archivo local (.git-credentials) debajo del directorio de su proyecto (vea a continuación el directorio "home"). Si no te gusta esto, elimina este archivo y cambia a usar el
opción de caché
Si desea que Git vuelva a pedirle credenciales cada vez que necesite
conéctese al repositorio remoto, puede ejecutar este comando:
git config --unset credential.helper
Para almacenar las contraseñas en .git-credentials
en tus %HOME%
directorio en lugar del directorio del proyecto: use el --global
bandera
git config --global credential.helper store
638
2017-09-03 01:14
TLDR; Use una archivo netrc encriptado con Git 1.8.3+.
Guardar una contraseña para un repositorio Git HTTPS URL es posible con un ~/.netrc
(Unix) o %HOME%/_netrc
(nota la _
) en Windows.
Pero: Ese archivo almacenaría su contraseña en texto sin formato.
Solución: Cifre ese archivo con GPG (GNU Privacy Guard), y haga que Git lo desencripte cada vez que necesite una contraseña (para push
/pull
/fetch
/clone
operación).
Nota: con Git 2.18 (Q2 2018), ahora puede personalizar el GPG utilizado para descifrar el cifrado .netrc
archivo.
Ver cometer 786ef50, cometer f07eeed (12 de mayo de 2018) por Luis Marsano (``).
(Fusionado por Junio C Hamano - gitster
- en cometer 017b7c5, 30 de mayo de 2018)
git-credential-netrc
: aceptar gpg
opción
git-credential-netrc
fue codificado para descifrar con 'gpg
' a pesar de
la opción gpg.program.
Este es un problema en distribuciones como Debian que llaman a GnuPG moderno algo más, como 'gpg2
'
Instrucciones paso a paso para Windows
Con Windows:
(Git tiene un gpg.exe
en su distribución, pero el uso de una instalación completa de GPG incluye una gpg-agent.exe
, que memorizará su frase de contraseña asociada a su clave GPG.)
Instalar gpg4Win Lite
, la interfaz mínima de línea de comandos gnupg (tomar el más reciente gpg4win-vanilla-2.X.Y-betaZZ.exe
), y complete su PATH con el directorio de instalación de GPG:
set PATH=%PATH%:C:\path\to\gpg
copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
(Nota la 'copy
'comando: Git necesitará un script Bash para ejecutar el comando'gpg
'. Ya que gpg4win-vanilla-2
viene con gpg2.exe
, necesitas duplicarlo).
(Asegúrese de poner una frase de contraseña en esa clave).
Confía en esa clave
Instale el script de ayuda credencial en un directorio dentro de su %PATH%
:
cd c:\a\fodler\in\your\path
curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc
(Sí, este es un script de Bash, pero funcionará en Windows, ya que Git lo llamará).
(No te olvides de 'protocol
'parte:'http
'o'https
'dependiendo de la URL que usarás)
(Ahora puedes borrar el _netrc
archivo, manteniendo solo el _netrc.gpg
encriptado)
(Nota la '/
': C:\path\to...
no funcionaría en absoluto.) (Puede usar al principio -v -d
para ver qué está pasando.)
A partir de ahora, cualquier comando de Git que use una URL HTTP (S) que requiera autenticación descifrará ese _netrc.gpg
archive y use el nombre de usuario / contraseña asociado al servidor con el que está contactando.
La primera vez, GPG le pedirá la contraseña de su clave GPG para descifrar el archivo.
Las otras veces, el agente gpg lanzado automáticamente en la primera llamada GPG le proporcionará esa frase de contraseña.
De esa forma, puedes memorizar varios URLs / inicios de sesión / contraseñas en un archivo, y tenerlo almacenado en su disco encriptado.
Lo encuentro más conveniente que un "caché" auxiliar, donde necesita recordar y escribir (una vez por sesión) una contraseña diferente para cada uno de sus servicios remotos, para que dicha contraseña se guarde en la memoria.
85
2017-08-21 15:48
Existe una forma sencilla y anticuada de almacenar credenciales de usuario en una URL HTTPS:
https://user:password@github.com/...
Puedes cambiar la URL con git remote set-url <remote-repo> <URL>
La desventaja obvia de ese enfoque es que debe almacenar la contraseña en texto sin formato. Todavía puede ingresar el nombre de usuario (https://user@github.com/...
) que al menos le ahorrará la mitad de la molestia.
Es posible que prefiera cambiar a SSH o utilizar el software de cliente GitHub.
32
2018-01-06 16:43
Usa una tienda de credenciales
Para git 2.11+ en OSX y linux, use la tienda de credenciales incorporada de git:
git config --global credential.helper libsecret
Para msysgit 1.7.9+ en Windows:
git config --global credential.helper wincred
Para Git 1.7.9+ en OS X, use:
git config --global credential.helper osxkeychain
30
2017-09-09 03:57
Puedes simplemente usar
git config credential.helper store
Cuando ingrese la contraseña la próxima vez con tirar o empujar, se almacenará en
.git-credentials como texto sin formato (un poco inseguro, pero solo póngalo en la carpeta protegida)
Y eso es todo, como se indica en esta página:
https://git-scm.com/docs/git-credential-store
30
2017-09-21 13:03
Probablemente estoy siendo un poco lento, pero no fue inmediatamente obvio para mí que primero tenía que descargar el ayudante. Encontré la descarga credential.helper en Atlassian se autentica permanentemente con repositorios de Git, Espero eso ayude.
Citar:
Siga estos pasos si desea usar Git con caché de credenciales en OSX:
Descarga el binario git-credential-osxkeychain.
Ejecute el siguiente comando para asegurarse de que el binario sea ejecutable:
chmod a+x git-credential-osxkeychain
Ponlo en el directorio / usr / local / bin.
Ejecute el siguiente comando:
git config --global credential.helper osxkeychain
18
2017-10-05 05:31
En una configuración de GNU / Linux, un ~ / .netrc funciona bastante bien también:
$ cat ~/.netrc
machine github.com login lot105 password howsyafather
Puede depender de las bibliotecas de red en las que Git esté utilizando HTTPS transporte.
18
2017-12-05 13:28
Simplemente incluya las credenciales de inicio de sesión como parte de la URL:
git remote rm origin
git remote add origin https://username:mypassword@github.com/path/to/repo.git
15
2017-07-03 07:13
Para Windows puedes usar Gerente de credenciales de Git (GCM) complemento. Actualmente es mantenido por Microsoft. Lo bueno es que guarda la contraseña en la tienda de credenciales de Windows, no como texto sin formato.
Hay un instalador en el página de lanzamientos del proyecto. Esto también instalará la versión oficial de git-for-windows con el administrador de credenciales incorporado. Permite la autenticación de 2 factores para github (y otros servidores). Y tiene una interfaz gráfica para iniciar sesión inicialmente.
Para los usuarios de cygwin (o los usuarios que ya usan el git-for-windows oficial), es posible que prefiera la instalación manual. Descargue el paquete zip del página de lanzamientos. Extraiga el paquete y luego ejecute el install.cmd
. Esto instalará a su ~/bin
carpeta. (Asegúrese de que su ~/bin
directorio está en su PATH.) Luego lo configura usando este comando:
git config --global credential.helper manager
Git luego ejecutará el git-credential-manager.exe
al autenticarse en cualquier servidor.
12
2018-05-24 07:49
Si no quiere guardar su contraseña en texto plano como lo dijo Mark, puede usar una URL github diferente para obtenerla que para presionar. En tu archivo de configuración, debajo [remote "origin"]
:
url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git
Todavía pedirá una contraseña cuando presione, pero no cuando busque, al menos para proyectos de código abierto.
11
2018-03-19 08:12