Ricerca nel sito web

Come risolvere il problema con Git che richiede sempre le credenziali utente per l'autenticazione HTTP(S).


Per accedere o lavorare con un repository Git remoto, puoi utilizzare i protocolli SSH o HTTP(S); con il primo, quando si tratta di repository privati, puoi semplicemente configurare le chiavi SSH senza passphrase che ti consente di trasferire i dati in modo sicuro senza digitare nome utente e password.

Tuttavia, con HTTP(S), ogni connessione ti chiederà di inserire nome utente e password (quando Git necessita di autenticazione per un particolare contesto URL) – gli utenti Github lo sanno bene.

In questo articolo, ti mostreremo come risolvere il problema con Git che richiede sempre le credenziali dell'utente per l'accesso tramite HTTP(S). Spiegheremo diversi modi per impedire a Git di richiedere ripetutamente nome utente e password quando interagisce con un repository remoto tramite HTTP(S).

Come installare Git su Linux

Se non hai il pacchetto Git installato sul tuo sistema, esegui il comando appropriato per la tua distribuzione Linux per installarlo (usa il comando Sudo dove necessario).

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]

Immissione del nome utente e della password Git nell'URL remoto

Come accennato in precedenza, quando si clona un repository Git remoto su HTTP(S), ogni connessione richiede un nome utente e una password come mostrato.

Per evitare che Git richieda il tuo nome utente e la password, puoi inserire le credenziali di accesso nell'URL come mostrato.


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

Lo svantaggio principale di questo metodo è che il tuo nome utente e la password verranno salvati nel comando nel file di cronologia della Shell.

così come nel file .git/config nella cartella locale, che rappresenta un rischio per la sicurezza.

cat .git/config

Nota: per gli utenti Github che hanno abilitato l'autenticazione a due fattori o che accedono a un'organizzazione che utilizza il Single Sign-On SAML, è necessario generare e utilizzare un token di accesso personale invece di inserire la password per HTTPS Git (come mostrato negli output di esempio in questa guida). Per generare un token di accesso personale, in Github, vai su Impostazioni => Impostazioni sviluppatore => Token di accesso personali.

Salvataggio del nome utente e della password del repository Git remoto su disco

Il secondo metodo consiste nell'utilizzare l'assistente delle credenziali Git per salvare nome utente e password in un semplice file su disco come mostrato.

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

D'ora in poi, Git scriverà le credenziali nel file ~/.git-credentials per ogni contesto URL, quando si accede per la prima volta. Per visualizzare il contenuto di questo file, puoi utilizzare il comando cat come mostrato.

cat  ~/.git-credentials

Per i comandi successivi per lo stesso contesto URL, Git leggerà le credenziali dell'utente dal file precedente.

Proprio come il metodo precedente, anche questo modo di passare le credenziali dell'utente a Git non è sicuro poiché il file di archiviazione non è crittografato ed è protetto solo dalle autorizzazioni standard del filesystem.

Il terzo metodo spiegato di seguito è considerato più sicuro.

Memorizzazione nella cache del nome utente e della password del repository Git remoto in memoria

Ultimo ma non meno importante, puoi anche utilizzare l'assistente per le credenziali Git per salvare temporaneamente le tue credenziali in memoria per un po' di tempo. Per fare ciò, emetti il seguente comando.

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

Dopo aver eseguito il comando precedente, quando provi ad accedere a un repository privato remoto per la prima volta, Git ti chiederà nome utente e password e li salverà in memoria per un po' di tempo.

Il tempo di memorizzazione nella cache predefinito è 900 secondi (o 15 minuti), dopodiché Git ti chiederà di inserire nuovamente nome utente e password. Puoi modificarlo come segue (1800 secondi=30 minuti o 3600 secondi=1 ora).

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

Per ulteriori informazioni su Git e sugli assistenti per le credenziali, consulta le relative pagine man.

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

Questa guida è stata utile? Fatecelo sapere tramite il modulo di feedback qui sotto. Puoi anche condividere eventuali domande o pensieri su questo argomento.