Com arreglar Git que demana sempre credencials d'usuari per a l'autenticació HTTP(S).


Per accedir o transferir dades de manera segura sense escriure el vostre nom d'usuari i contrasenya.

Tanmateix, amb HTTP(S), cada connexió us demanarà que introduïu el vostre nom d'usuari i contrasenya (quan Git necessiti autenticació per a un context d'URL concret) - els usuaris de Github ho saben bé.

En aquest article, us mostrarem com arreglar Git sempre demanant credencials d'usuari per accedir a HTTP(S). Explicarem diferents maneres d'evitar que Git demani repetidament el nom d'usuari i la contrasenya quan interactua amb un dipòsit remot a través d'HTTP(S).

Com instal·lar Git a Linux

Si no teniu el paquet Git instal·lat al vostre sistema, executeu l'ordre adequat per a la vostra distribució de Linux per instal·lar-lo (utilitzeu l'ordre Sudo si cal).

$ sudo apt install git      [On Debian/Ubuntu]
# yum install git           [On CentOS/RHEL/Fedora]
$ sudo zypper install git   [On OpenSuse]
$ sudo pacman -S git        [On Arch Linux]

Introduïu el nom d'usuari i la contrasenya de Git a l'URL remot

Com havíem esmentat anteriorment, en clonar un dipòsit Git remot mitjançant HTTP(S), cada connexió necessita un nom d'usuari i una contrasenya, tal com es mostra.

Per evitar que Git demani el vostre nom d'usuari i contrasenya, podeu introduir les credencials d'inici de sessió a l'URL tal com es mostra.

$ sudo git clone https://username:[email /username/repo_name.git
OR
$ sudo git clone https://username:[email /username/repo_name.git local_folder

El principal inconvenient d'aquest mètode és que el vostre nom d'usuari i contrasenya es desaran a l'ordre del fitxer d'historial de Shell.

així com al fitxer .git/config de la carpeta local, que comporta un risc de seguretat.

$ cat .git/config

Nota: Per als usuaris de Github que han activat l'autenticació de dos factors o que accedeixen a una organització que utilitza l'inici de sessió únic SAML, heu de generar i utilitzar un testimoni d'accés personal en lloc d'introduir la vostra contrasenya per a HTTPS Git (tal com es mostra a les sortides d'exemple). en aquesta guia). Per generar un testimoni d'accés personal, a Github, aneu a Configuració => Configuració del desenvolupador => Fitxes d'accés personal.

Desant el nom d'usuari i la contrasenya del repositori Git remot al disc

El segon mètode és utilitzar l'ajudant de credencials de Git per desar el vostre nom d'usuari i contrasenya en un fitxer senzill al disc, tal com es mostra.

$ git config credential.helper store				
OR
$ git config --global credential.helper store		

A partir d'ara, Git escriurà les credencials al fitxer ~/.git-credentials per a cada context d'URL, quan s'accedeixi per primera vegada. Per veure el contingut d'aquest fitxer, podeu utilitzar l'ordre cat tal com es mostra.

$ cat  ~/.git-credentials

Per a les ordres posteriors per al mateix context d'URL, Git llegirà les vostres credencials d'usuari del fitxer anterior.

Igual que el mètode anterior, aquesta manera de passar les credencials d'usuari a Git tampoc no és segura, ja que el fitxer d'emmagatzematge no està xifrat i només està protegit amb permisos estàndard del sistema de fitxers.

El tercer mètode que s'explica a continuació es considera més segur.

Emmagatzemar a la memòria cau el nom d'usuari i la contrasenya del repositori Git remot a la memòria

Finalment, però no menys important, també podeu utilitzar l'ajudant de credencials de Git per desar temporalment les vostres credencials a la memòria durant un temps. Per fer-ho, emet l'ordre següent.

$ git config credential.helper cache
OR
$ git config --global credential.helper cache

Després d'executar l'ordre anterior, quan intenteu accedir a un dipòsit privat remot per primera vegada, Git us demanarà el vostre nom d'usuari i contrasenya i els desarà a la memòria durant un temps.

El temps d'emmagatzematge a la memòria cau predeterminat és de 900 segons (o 15 minuts), després dels quals Git us demanarà que torneu a introduir el vostre nom d'usuari i contrasenya. Podeu canviar-lo de la següent manera (1800 segons = 30 minuts o 3600 segons = 1 hora).

$ git config --global credential.helper 'cache --timeout=18000'
OR
$ git config --global credential.helper 'cache --timeout=36000'

Per obtenir més informació sobre Git i els ajudants de credencials, consulteu les seves pàgines de manual.

$ man git
$ man git-credential-cache
$ man git-credential-store

Ha estat útil aquesta guia? Feu-nos-ho saber mitjançant el formulari de comentaris que trobareu a continuació. També podeu compartir qualsevol pregunta o reflexió sobre aquest tema.