Autenticazione GitHub non riuscita su https, che restituisce un indirizzo e-mail errato


128

L'avvio di una push o di qualsiasi altra azione con GitHub dalla riga di comando (su https, non ssh) che richiede nome utente e password non solo fallisce ma, quando lo fa, restituisce

Username for 'https://github.com': username
Password for 'https://username@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

Non ho un @github.comindirizzo La password e il nome utente sono corretti.

So che potrei passare a SSH e utilizzare le chiavi, ma questo non risponde al motivo per cui l'autenticazione non riesce su HTTPS.


Documentazione git-scm.com/book/en/… git-config - Ottieni e imposta repository o opzioni globali git-scm.com/docs/git-config
John Smith

Risposte:


171

Il supporto di GitHub ha determinato subito la radice del problema: l'autorizzazione a due fattori.

Per usare GitHub sulla shell con https, crea un token OAuth . Come osserva la pagina, ho dovuto rimuovere il mio nome utente e le credenziali della password da Keychain ma con osx-keychainsul posto, il token è memorizzato come password e le cose funzionano esattamente come farebbero su https senza autorizzazione a due fattori.


4
+1. È possibile anche utilizzare un PAT (Personal token di accesso) in un netrc cifrato: stackoverflow.com/a/18607931/6309
VonC

Qual è la differenza tra un PAT e un OAuth?
lindhe,

@lindhe Il token OAuth è un tipo di token, in questo caso il PAT è un token OAauth.
Kerry Jones,

22

Non ho un @github.comindirizzo

Non è necessario: il @è il separatore tra nome utente: password e dominio.
Non è un indirizzo email.

Un URL https completo di GitHub sarebbe:

https://username:password@github.com/username/reponame.git

Senza la password (che sarebbe quindi richiesta sulla riga di comando), ciò avrebbe dato:

https://username@github.com/username/reponame.git

Ma ancora username@github.com non è un indirizzo email, solo la prima parte delle credenziali.

Assicurarsi che il caso della vostra usernameed reponameè corretta: è case sensitive .

Si noti che è possibile archiviare e crittografare le proprie credenziali in .netrc.gpg(o _netrc.gpgsu Windows) se non si desidera mettere in chiaro tali credenziali nell'URL.
Vedi " Esiste un modo per saltare la digitazione della password quando si utilizzahttps://github ".


Puoi anche lasciare la password fuori, digitando la password ogni volta. In tal caso lo sarebbe https://username@github.com/username/reponame.git.
Mark Hildreth,

Oh, ha senso. Grazie. Conoscevo la distinzione tra maiuscole e minuscole e sono sicuro che il nome utente e la password forniti sono corretti. (Funzionano bene per accedere al sito Web.) A
ele

2
@ele sì, ma la tua password include caratteri speciali (come ! * ' ( ) ; : @ & = + $ , / ? # [ ])? Dovrebbero essere "codificati in percentuale" ( en.wikipedia.org/wiki/Percent-encoding ).
VonC

La password è alfanumerica. Vedrò cosa mi darà 'git remote -v' quando sarò il prossimo alla macchina ma sembra che potrei aver bisogno di contattare il supporto di GitHub dopo.
ele

@ele provare prima l'approccio .netrc (non crittografare nemmeno, solo per i test). Se ciò non funziona, il supporto GitHub è davvero il passo successivo.
VonC

21
  • Vai a Credential Manager => Windows Manager
  • Elimina tutto ciò che riguarda tfs
  • Ora fai clic su Aggiungi una credenziale generica e fornisci i seguenti valori

    (1) Indirizzo Internet o di rete: git: https: //tfs.donamain name (2) username: username (3) password: password

    questo dovrebbe risolverlo


Wow. Adoro come memorizza la password errata se la digiti in modo errato. Quindi devi andare manualmente aggiornarlo o eliminarlo
Kolob Canyon

10

Può accadere in Windows se in precedenza sono state memorizzate credenziali diverse. Vai a Credential Manager ed elimina le credenziali github memorizzate


1
È anche possibile modificare direttamente la password in Gestione credenziali di Windows con la nuova password.
Spenhouet,


8

La stessa cosa è successa con me, quando ho abilitato l'autenticazione a 2 vie per github. Cose che ho fatto per risolvere:

  • Ottieni il token di accesso personale. Questo devi controllare e generare se non è già disponibile. Link per questo: https://github.com/settings/tokens
  • Vai al tuo locale ed elimina la cartella e ri-clona il ramo da github.
  • Ora prova il comando che stavi provando in precedenza, ovvero: git pull origin master
  • Inserisci nome utente e In password incolla il token generato e inoltre non dimenticare di salvarlo da qualche parte, quindi puoi riutilizzarlo se necessario.

In questo modo risolverai il tuo problema.


Buona didascalia - mi stava succedendo su mac => ho dovuto rigenerare il mio PAT
SliverNinja - MSFT

Dobbiamo generare il token se abbiamo bisogno di autorizzazioni non presenti nei token generati in precedenza. Inoltre, se abbiamo perso il token precedente, possiamo generare questo nuovo token e utilizzarlo come password per l'autenticazione anziché la nostra password git originale.
Mohd Belal,

5

In caso contrario, questo aiuta anche chiunque altro, ho eseguito l'accesso all'app mac, la riga di comando funzionava bene, ma poiché ho attivato 2FA, i miei comandi stavano restituendo l'errore. Ho dovuto uscire dall'app, quindi ho potuto usare il mio token di accesso personale nei miei comandi come da risposta ele qui .

Spero che questo aiuti qualcuno!


-2

Su Windows, potresti essere bloccato in silenzio dal tuo antivirus o firewall di Windows. Disattiva temporaneamente tali servizi e spingi / tira da origine remota.

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.