Voglio usare un push e pull automaticamente in GitExtension , senza inserire il mio utente e la mia password in un prompt, ogni volta.
Quindi, come posso salvare le mie credenziali in Git?
Voglio usare un push e pull automaticamente in GitExtension , senza inserire il mio utente e la mia password in un prompt, ogni volta.
Quindi, come posso salvare le mie credenziali in Git?
Risposte:
Correre
git config --global credential.helper store
poi
git pull
fornire un nome utente e una password e tali dettagli verranno successivamente ricordati. Le credenziali sono archiviate in un file sul disco, con le autorizzazioni del disco "solo leggibili / scrivibili dall'utente" ma ancora in testo normale.
Se si desidera modificare la password in un secondo momento
git pull
Fallirà, poiché la password non è corretta, git quindi rimuove l'utente + password offensivi dal ~/.git-credentials
file, quindi ora riesegui
git pull
per fornire una nuova password in modo che funzioni come prima.
Puoi usare il git config
per abilitare l'archiviazione delle credenziali in git.
git config --global credential.helper store
Quando esegui questo comando, la prima volta che esegui il pull o il push dal repository remoto, ti verrà chiesto il nome utente e la password.
Successivamente, per le conseguenti comunicazioni con il repository remoto non è necessario fornire nome utente e password.
Il formato di archiviazione è un .git-credentials
file, archiviato in testo normale.
Inoltre, puoi utilizzare altri helper per la git config credential.helper
cache di memoria, ovvero:
git config credential.helper cache <timeout>
che richiede un facoltativo timeout parameter
, determinando per quanto tempo le credenziali verranno conservate in memoria. Usando l'helper, le credenziali non toccheranno mai il disco e verranno cancellate dopo il timeout specificato. Il default
valore è900 seconds (15 minutes).
ATTENZIONE : Se usi questo metodo, le password del tuo account git verranno salvate in plaintext
formato, ad global .gitconfig file
es. In Linux sarà/home/[username]/.gitconfig
Se questo non è desiderabile per te, utilizza invece un ssh key
per i tuoi account.
git config credential.helper cache
le password non verranno salvate in un file, memorizzate solo in memoria. Vedi: git-scm.com/docs/git-credential-cache
Metodo consigliato e sicuro: SSH
Crea una chiave sith Github. Vai su github.com -> Impostazioni -> Chiavi SSH e GPG -> Nuova chiave SSH. Ora salva la tua chiave privata sul tuo computer.
Quindi, se la chiave privata viene salvata come id_rsa nella directory ~ / .ssh / , la aggiungiamo per l'autenticazione in quanto tale:
ssh-add -K ~/.ssh/id_rsa
Un metodo più sicuro: memorizzazione nella cache
Possiamo usare git-credential-store per memorizzare nella cache il nostro nome utente e password per un periodo di tempo. Basta inserire quanto segue nella CLI (terminale o prompt dei comandi):
git config --global credential.helper cache
È inoltre possibile impostare il periodo di timeout (in secondi) come tale:
git config --global credential.helper 'cache --timeout=3600'
Un metodo ancora meno sicuro
Git-credential-store può anche essere usato, ma salva le password in un file di testo normale sul disco in quanto tale:
git config credential.helper store
Risposta obsoleta: rapida e insicura
Questo è un metodo non sicuro per archiviare la password in testo semplice. Se qualcuno ottiene il controllo del tuo computer, la tua password sarà esposta!
È possibile impostare il nome utente e la password in questo modo:
git config --global user.name "your username"
git config --global user.password "your password"
In Terminale, immettere quanto segue:
# Set git to use the credential memory cache
git config --global credential.helper cache
Per impostazione predefinita, Git memorizzerà la password nella cache per 15 minuti.
Per modificare il timeout della cache delle password predefinito, immettere quanto segue:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
Dalla guida di GitHub
cache
parte con store
. Così, il comando completo sarà: git config --global credential.helper store
. Nota che questo memorizzerà la tua password in un file di testo aperto (senza alcuna crittografia, per così dire).
--timeout
parametro?
È possibile modificare il ~/.gitconfig
file per archiviare le proprie credenziali
sudo nano ~/.gitconfig
Che dovrebbe già avere
[user]
email = your@email.com
user = gitUSER
Dovresti aggiungere in fondo a questo file.
[credential]
helper = store
Il motivo per cui consiglio questa opzione è perché è globale e se in qualsiasi momento devi rimuovere l'opzione sai dove andare e cambiarla.
UTILIZZARE SOLO QUESTA OPZIONE IN TE PERSONAL COMPUTER.
Quindi quando tiri | clone | inserisci la tua password git, in generale, la password verrà salvata nel ~/.git-credentials
formato
https://GITUSER:GITPASSWORD@DOMAIN.XXX
DOVE DOMAIN.XXX POTREBBE ESSERE GITHUB.COM | BITBUCKET.ORG | ALTRO
Vedi Documenti
Inserisci le tue credenziali nell'URL in questo modo:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Puoi memorizzarlo in questo modo:
git remote add myrepo https://Userna...
... esempio per usarlo :
git push myrepo master
Ora questo è per elencare gli alias url:
git remote -v
... e che il comando per eliminarne uno:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, non è ssh
, quindi una soluzione di questo tipo può essere utile lì. Nota anche che puoi usare un oauth-token, che è leggermente più sicuro della tua password GitHub.
Per l'impostazione globale, aprire il terminale (da qualsiasi posizione) eseguire quanto segue:
git config --global user.name "your username"
git config --global user.password "your password"
Con ciò, qualsiasi repository git locale che hai sulla tua macchina utilizzerà tali informazioni.
È possibile configurare individualmente per ciascun repo facendo:
eseguire quanto segue:
git config user.name "your username"
git config user.password "your password"
Interessa solo quella cartella (perché la tua configurazione è locale).
--local
tag ma di nuovo non succede nulla
È possibile utilizzare git-credential-store per memorizzare le password non crittografate sul disco, protette solo dalle autorizzazioni del file system.
Esempio
$ 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]
È possibile controllare le credenziali archiviate nel file ~/.git-credentials
Per maggiori informazioni visita git-credential-store - Helper per archiviare le credenziali sul disco
Sarai più sicuro se usi l'autenticazione SSH rispetto all'autenticazione nome utente / password.
Se stai utilizzando un Mac, l'autenticazione client SSH è integrata nel portachiavi MacOS. Dopo aver creato una chiave SSH, digitare nel terminale:
ssh-add -K ~/.ssh/id_rsa
Ciò aggiungerà la chiave privata SSH al portachiavi MacOS. Il client git utilizzerà ssh quando si connette al server remoto. Finché hai registrato la tua chiave pubblica ssh sul server, starai bene.
SSH
. Utilizzando l'autenticazione HTTP, qualcuno che ruba le credenziali avrebbe accesso solo a GitHub/GitLab
. Anche i token sono progettati per avere una vita limitata.
Dopo aver esaminato dozzine di post SO, blog, ecc., Ho provato tutti i metodi e questo è quello che mi è venuto in mente. Copre TUTTO.
Questi sono tutti i modi e gli strumenti con cui puoi autenticare in modo sicuro git per clonare un repository senza una richiesta di password interattiva .
Vuoi Just Works ™? Questo è il magico proiettile d'argento.
Ottieni il tuo token di accesso (vedi la sezione nel cheatsheet se hai bisogno delle istruzioni Github o Gitea) e impostalo in una variabile di ambiente (sia per lo sviluppo locale che per la distribuzione):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Per Github, copia ed esegui queste righe alla lettera :
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:"
Complimenti, ora qualsiasi strumento automatico che clona i repository git non sarà ostruito da una richiesta di password, sia usando https o uno stile di ssh url.
Non usi Github?
Per altre piattaforme (Gitea, Github, Bitbucket), basta cambiare l'URL. Non modificare i nomi utente (sebbene arbitrari, sono necessari per voci di configurazione distinte).
Compatibilità
Funziona localmente in MacOS, Linux, Windows (in Bash), Docker, CircleCI, Heroku, Akkeris, ecc.
Ulteriori informazioni
Vedi la sezione ".gitconfig inveceOf" del cheatheet.
Sicurezza
Vedi la sezione "Sicurezza" del cheatsheet.
git config --global credential."https://somegithost.com".username MyUserName
, che è nel tuo cheatsheet, ma non altrove in questo thread di risposte. Quella particolare soluzione non risponde alla domanda del PO, ma ha risposto alla mia, quindi grazie!
In tal caso è necessario l'helper delle credenziali di git per dire a git di ricordare la password e il nome utente di GitHub utilizzando la seguente riga di comando:
git config --global credential.helper wincred
e se stai usando repo usando la chiave SSH, allora hai bisogno della chiave SSH per autenticarti.
Nessuna delle risposte sopra ha funzionato per me. Continuavo a ricevere quanto segue ogni volta che volevo fetch
o pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Per Mac
Sono stato in grado di impedirgli di chiedere la mia passphrase:
vi ~/.ssh/config
UseKeychain yes
:wq!
Per Windows
Sono stato in grado di farlo funzionare usando le informazioni in questo stackexchange: https://unix.stackexchange.com/a/12201/348665
Oltre a modificare il ~/.gitconfig
file, puoi farlo se chiedi:
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'
Il nome utente e la password possono utilizzare alcuni caratteri che potrebbero spezzare la password se si utilizzano virgolette doppie.
--local
o --global
significa che i parametri di configurazione sono salvati per il progetto o per l'utente os.
basta usare
git config --global credential.helper store
e fai il git pull , ti chiederà username e password, d'ora in poi non fornirà alcun prompt per username e password e memorizzerà i dettagli
.git-credentials
è dove vengono memorizzati il nome utente e la password (token di accesso) quando si esegue git config --global credential.helper store
, che è ciò che suggeriscono altre risposte, quindi digitare il nome utente e la password o il token di accesso:
https://${username_or_access_token}:${password_or_access_token}@github.com
Quindi, per salvare il nome utente e la password (token di accesso):
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Questo è molto utile per il robot github, ad esempio per risolvere build automatizzate Chain nello stesso repository docker avendo regole per diversi rami e quindi attivarlo spingendolopost_push
hooker nell'hub docker.
Un esempio di questo può essere visto qui in StackOverflow.
Un modo rapido per memorizzare nella cache credenziali git:
git config credential.helper 'cache' --timeout=10800
bello e sicuro
il timeout è in secondi.
Dopo aver letto il thread per intero e aver sperimentato la maggior parte delle risposte a questa domanda, alla fine ho trovato la procedura che funziona per me. Voglio condividerlo nel caso in cui qualcuno abbia a che fare con un caso d'uso complesso ma ancora non voglio passare attraverso l'intero thread e le pagine man di gitcredentials , gitcredentials-store ecc., Come ho fatto io.
Di seguito trovi la procedura che ti suggerisco SE (come me) devi gestire diversi repository di diversi provider (GitLab, GitHub, Bitbucket, ecc.) Utilizzando diverse combinazioni nome utente / password. Se invece hai un solo account con cui lavorare, allora potresti fare meglio a utilizzare le soluzioni git config --global credential.helper store
o git config --global user.name "your username"
ecc. Che sono state molto ben spiegate nelle risposte precedenti.
La mia soluzione:
> 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 : questo comando crea un nuovo file chiamato ".git_repo_credentials" nella tua home directory, in cui Git memorizza le tue credenziali. Se non si specifica un nome di file, Git utilizza l'impostazione predefinita ".git_credentials". In questo caso, semplicemente eseguendo il comando seguente:
> git config credential.helper store
git config credential.*.username my_user_name
Nota : l'utilizzo di "*" di solito è corretto se i repository provengono dallo stesso provider (ad esempio GitLab). Se invece i tuoi repository sono ospitati da provider diversi, ti suggerisco di impostare esplicitamente il link al provider per ogni repository, come nel seguente esempio (per GitLab):
git config credential.https://gitlab.com.username my_user_name
A questo punto se si emette un comando che richiede le proprie credenziali (ad es. git pull
) Verrà richiesta la password corrispondente a "nome_utente_mio". Questo è richiesto solo una volta perché git archivia le credenziali in ".git_repo_credentials" e utilizza automaticamente gli stessi dati agli accessi successivi.
Dal commento di rifrol, su Linux Ubuntu, da questa risposta , ecco come in 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
Alcune altre distro forniscono il file binario in modo da non doverlo costruire.
In OS X viene in genere "costruito" con un modulo predefinito di "osxkeychain" in modo da ottenerlo gratuitamente.
Controlla la documentazione ufficiale di Git:
Se si utilizza il trasporto SSH per la connessione ai telecomandi, è possibile disporre di una chiave senza passphrase, che consente di trasferire i dati in modo sicuro senza digitare nome utente e password. Tuttavia, ciò non è possibile con i protocolli HTTP: ogni connessione richiede un nome utente e una password. Ciò diventa ancora più difficile per i sistemi con autenticazione a due fattori, in cui il token che si utilizza per una password viene generato casualmente e non può essere pronunciato.
Fortunatamente, Git ha un sistema di credenziali che può aiutare in questo. Git ha alcune opzioni fornite nella confezione:
L'impostazione predefinita non è affatto cache. Ogni connessione richiederà il nome utente e la password.
La modalità "cache" mantiene le credenziali in memoria per un certo periodo di tempo. Nessuna delle password viene mai archiviata sul disco e viene eliminata dalla cache dopo 15 minuti.
La modalità "store" salva le credenziali in un file di testo normale su disco e non scadono mai. Ciò significa che fino a quando non cambi la password per l'host Git, non dovrai mai più digitare le tue credenziali. Il rovescio della medaglia di questo approccio è che le tue password sono memorizzate in chiaro in un semplice file nella tua home directory.
Se stai usando un Mac, Git viene fornito con una modalità "osxkeychain", che memorizza nella cache le credenziali nel portachiavi sicuro collegato al tuo account di sistema. Questo metodo memorizza le credenziali su disco e non scadono mai, ma sono crittografate con lo stesso sistema in cui sono archiviati i certificati HTTPS e i riempimenti automatici di Safari.
Se stai usando Windows, puoi installare un helper chiamato "Git Credential Manager per Windows". Questo è simile all'helper "osxkeychain" descritto sopra, ma utilizza l'archivio credenziali di Windows per controllare le informazioni riservate. È disponibile all'indirizzo https://github.com/Microsoft/Git-Credential-Manager-for-Windows .
Puoi scegliere uno di questi metodi impostando un valore di configurazione Git:
$ git config --global credential.helper cache
$ git config --global credential.helper store