Come posso assicurarmi che Git non mi chieda il nome utente e la password GitHub?


172

Sto lavorando con un repository su GitHub e ogni volta che provo a spingere qualcosa, chiede il mio nome utente e la mia password GitHub. Non voglio che lo faccia.

Ho provato le istruzioni su come impostare la tua e-mail in Git , ovvero impostare le variabili Git github.user e github.token, ma questo non ha fatto alcuna differenza.

Non capisco perché questo stia accadendo.


È necessario memorizzare nella cache la password: help.github.com/articles/set-up-git#password-caching
Piotr Usewicz

Risposte:


33

Devi impostare un agente ssh con il quale devi autenticarti una sola volta. Vedi questa risposta su SO per un howto.


1
Ma questa soluzione è per le frasi della famiglia ssh. Il problema è che git usa "git push" che non attiva l'agente ssh, suppongo. (L'ho già fatto, quindi so che non funziona.)
Picardo

2
@picardo: l'ho fatto e funziona davvero.
Daenyth,

213

Ho avuto un problema simile oggi: ho incasinato le cose nella mia copia di lavoro, quindi ho deciso di rinominare la directory e clonare di nuovo il mio progetto da Github. Ma dopo averlo fatto, ho dovuto inserire la mia password per fare qualsiasi richiesta pull / push, invece di inserire la passphrase come una volta.

Questo perché oggi ho usato il protocollo https per clonare il progetto! Per verificare quale protocollo stai utilizzando, esegui

git config -l

e guarda la linea che inizia con 'remote.origin.url'.

Per cambiare protocollo:

git config remote.origin.url git@github.com:the_repository_username/your_project.git

the_repository_usernamee your_projectdeve essere sostituito con il nome del repository appropriato e il proprietario di tale repository. Il nome utente sarà tuo se sei il proprietario del repository o altrimenti il ​​nome utente del proprietario del repository.


5
Ha funzionato per me. Una cosa è che l'URL non contiene il mio nome utente ma l'indirizzo del repository come appare su github:git@github.com:some-user/repo-name.git
B Seven

1
Nota: Google mi ha portato qui. Ho remote.origin.urlimpostato il metodo https e non ho nemmeno notato che c'erano metodi httpsvs. sshQuesto URL mi ha aiutato a vedere l'ovvio: help.github.com/articles/…
Chris K,

Esiste un modo per passare anche l'immissione della password?
Il

Q per quelli con conoscenza git: Qualche differenza (o preferenza) tra git config remote.origin.url ...usato sopra, rispetto a git remote set-url origin ...?
Daryn,

Non riuscivo a capire come rimuovere un'origine errata come quella. La risposta è:git remote rm origin
Vacilando,

30

Se stai usando HTTPS invece di SSH, puoi seguire questo:

  1. Trova il tuo URL remoto (remote.origin.url) con

    git config -l
    

    grazie a Sergio Morstabilini

  2. Il tuo URL remoto sarà così: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Esegui questo comando:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    

2
il mio nome utente stesso contiene @, non ha funzionato per me.
coding_idiot

Ma se non funziona (non è necessario utilizzare la tua e-mail) funziona perfettamente! Grazie.
Killah,

4
Se il tuo nome utente include un @, devi codificarlo tramite URL. meyerweb.com/eric/tools/dencoder
Tim Bodeit il

1
È necessario omettere la password per motivi di sicurezza.
Zygimantus,

3
attenzione, la password verrà memorizzata in chiaro all'interno del .git/configfile!
Amro,

26

Preferisco usare HTTPS, lo trovo più facile e più sicuro che impostare i tasti ssh.

Utilizzando HTTPS, puoi impedire a git di chiedere al tuo nome utente i telecomandi github con il seguente:

git config --global url."https://yourusername@github.com".insteadOf "https://github.com"

E puoi almeno ridurre la frequenza con cui git ti chiede la password con:

git config --global credential.helper 'cache --timeout=28800'

Dove 28800 sono 8 ore. Uso questa configurazione per inserire la mia password una sola volta, quando inizio la mia giornata lavorativa.

Dopodiché avrai queste voci dentro di te ~/.gitconfig

[url "https://yourusername@github.com"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Fonte:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config


6

Quando imposti una chiave ssh per github, se non è la tua chiave predefinita, dovrai aggiungere una sezione al tuo ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa

6

Se utilizzi HTTPS su Windows, prova Git Credential Store : utilizza Windows Credential Store per contenere il tuo nome e la tua password.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Quindi la prossima volta che inserisci il tuo nome e password, li ricorderà per te.


1
Grazie. Il progetto è stato rinominato Git-Credential-Manager-for-Windows .
Michael S.

5

Inoltre, se desideri ricevere sempre la password, ma non il tuo nome utente, configura il telecomando come HTTPS con un nome utente .. In questo modo ..

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name

Successivamente, ti verrà richiesta la password ogni volta, ma non il tuo nome utente.

È così che lo preferisco, poiché mi piace essere costretto a digitare la mia password github prima di condividerla con il mondo.


2

Le cose sono un po 'diverse se usi l'autenticazione a 2 fattori come me. Dal momento che non ho trovato una buona risposta altrove, ne inserirò una qui in modo che forse la possa trovare in seguito.

Se si utilizza l'autenticazione a 2 fattori, la specifica di nome utente / password non funzionerà in alcun modo: l'accesso verrà negato. Ma puoi usare un token di accesso all'applicazione e usare l'helper delle credenziali di git per memorizzarlo nella cache. Ecco i link pertinenti:

E non ricordo dove l'ho visto, ma quando mi viene chiesto il tuo nome utente, è lì che si attacca il token di accesso all'applicazione. Quindi lasciare vuota la password. Ha funzionato sul mio mac.


2

usa SSH

Per evitare che GitHub richieda la password mentre si spinge, idealmente dovresti usare SSH ( git@github.com:...) invece dell'URL HTTPS ( https://github.com/...) e aggiungere la tua chiave SSH al tuo account GitHub . Vedi: Quale URL remoto dovrei usare?

GitHub - Clone con SSH

un aiutante credenziale

Altrimenti se hai davvero bisogno di usare HTTPS, per memorizzare nella cache la tua password GitHub in Git , dovresti usare un helper di credenziali per dire a Git di ricordare il tuo nome utente e password GitHub ogni volta che parla con GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperrichiesto),
  • Finestre: git config --global credential.helper wincred
  • Linux e altri: git config --global credential.helper cache

.netrc

Un altro metodo consiste nell'utilizzare configurare l'utente / password in ~/.netrc( _netrcsu Windows), ad es

machine github.com
login USERNAME
password PASSWORD

OAuth

Utilizzare il token OAuth ( token API personale ) per inviare le modifiche, ad es

git push https://4UTHT0KEN@github.com/foo/bar

Relazionato:


1

Inoltre, se stai usando Windows, puoi usare:

$ git config --global credential.helper wincred

devi solo accedere ancora una volta e poi git ricorderà.


1

Chiedere il nome utente è fastidioso per me, ma chiedere una password è bello poiché ti assicura di voler davvero rendere pubbliche le tue modifiche ...

Quindi aggiungo solo questo al mio ".gitconfig"

[url "https://myusername@github.com"]
    insteadOf = https://github.com

0

Usa Git Credential Manager per Windows , se sei su Windows.

Questo progetto include :

  • Archiviazione sicura delle password nell'archivio credenziali di Windows
  • Supporto dell'autenticazione a più fattori per Visual Studio Team Services
  • Supporto per l'autenticazione a due fattori per GitHub
  • Generazione di token di accesso personale e supporto all'utilizzo per Visual Studio Team Services e GitHub
  • Supporto della modalità non interattiva per Visual Studio Team Services supportato da Directory di Azure
  • Autenticazione Kerberos per Team Foundation Server
  • Impostazioni opzionali per l'ottimizzazione dell'agente di build

Basta scaricare l'ultima versione e installarla.

Come usare

Non Funziona magicamente quando sono necessarie le credenziali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.