Il famoso "ERRORE: autorizzazione a .git negata all'utente" di Git


118

Ho provato a cercare su Google e letto https://help.github.com/en/articles/connecting-to-github-with-ssh e varie, varie guide. Non riesco a fare git push -u origin mastero git push origin master(lo stesso comando).

Ho il mio account git da almeno 2 anni circa. Sono riuscito con successo a creare repository e push -u origin masterbene sul mio laptop, ma su questo desktop ho problemi.

Ecco cosa ho provato:

1. Ho impostato il mio nome utente git

2. Ho configurato la mia email utente git

3. Ho caricato il contenuto del mio /home/meder/.ssh/id_rsa.pub nella pagina dell'account di GitHub. Ho verificato di non aver incollato spazi bianchi

4. Ho creato un ~ / .ssh / config con questi contenuti:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

Ho modificato il .ssh in 700, id_rsa 600

5. Ho aggiunto l' origine remota corretta senza fare errori di battitura :git remote add origin git@github.com:medero/cho.git

6. Per confermare # 5, ecco il mio .git / config. La directory è corretta e non un'altra directory:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:medero/cho.git

7. ssh git@github.com -v mi dà una corretta autenticazione

8. Una cosa strana è che il nome utente con cui mi saluta è stato taggiunto. Il mio nome utente GitHub è medero, no medert.

Ciao mederot! Ti sei autenticato con successo, ma GitHub non fornisce l'accesso alla shell.

9. Io sono non dietro un proxy o un firewall

10. La chiave è offerta, ecco l'output da -v:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11. Ecco i comandi che ho usato

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin git@github.com:medero/cho.git
git push -u origin master

12. Non voglio creare una nuova chiave SSH.

13. Se git clone usando ssh e effettuo una modifica, commit e git push, ottengo la stessa identica cosa.

14. Ecco l'errore effettivo:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. Ho impostato il mio nome utente GitHub e il token GitHub:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token Imposta il token GitHub per tutte le istanze git sul sistema

16. Ho confermato che il mio nome utente github NON è mederote il mio token github È CORRETTO per la pagina del mio account (convalidato i primi 2 caratteri e gli ultimi 2 caratteri).

17. Per confermare # 16, contiene ~ / .gitconfig

[github]
    token = mytoken...
    user = medero

18. L' ho fatto ssh-key add ~/.ssh/id_rsase fosse necessario ...



TEORIE:

Sospetto che ci sia qualcosa di sospetto perché quando ottengo l'autenticazione di ssh, il saluto dell'utente è mederote non mederoè il mio account. È possibile che qualcosa nel mio account GitHub sia stato memorizzato nella cache in modo errato?

Sospetto anche qualche stranezza della cache ssh locale perché se io mv ~/.ssh/id_rsa KAKAe mv ~/.ssh/id_rsa.pub POOPOO, e lo faccio ssh git@github.com -v, mi autentica ancora e dice che serve il mio /home/meder/.ssh/id_rsa quando l'ho rinominato ?! Deve essere memorizzato nella cache ?!


Sto usando "Github per Windows" e ho riscontrato problemi simili durante il passaggio tra due account Github. Ecco la mia soluzione: stackoverflow.com/questions/18565876/…
Alisa,

Se stai cercando di spingere da 2 differenti repos locali alla loro origine corrispondente remoto repo quindi controllare questo: stackoverflow.com/q/63291726/12033855
an4s911

Risposte:


35

Nel passaggio 18, presumo che intendi ssh-add ~/.ssh/id_rsa? Se è così, questo spiega questo:

Sospetto anche qualche stranezza della cache ssh locale perché se mv ~ / .ssh / id_rsa KAKA e mv ~ / .ssh / id_rsa.pub POOPOO, e faccio ssh git@github.com -v, mi autentica ancora e dice che serve il mio /home/meder/.ssh/id_rsa quando l'ho rinominato ?! Deve essere memorizzato nella cache ?!

... poiché ssh-agentsta memorizzando nella cache la tua chiave.

Se guardi su GitHub, c'è un account mederot . Sei sicuro che questo non abbia niente a che fare con te? GitHub non dovrebbe consentire l'aggiunta della stessa chiave pubblica SSH a due account, poiché quando si utilizzano gli git@github.com:...URL si identifica l'utente in base alla chiave SSH. (Che questo non dovrebbe essere consentito è confermato qui .)

Quindi, sospetto (in ordine decrescente di probabilità) che uno dei seguenti sia il caso:

  1. Hai creato l'account mederot in precedenza e hai aggiunto la tua chiave SSH.
  2. Qualcun altro ha ottenuto una copia della tua chiave pubblica e l'ha aggiunta all'account mederot GitHub.
  3. C'è un orribile bug in GitHub.

Se 1 non è il caso, lo segnalo a GitHub, in modo che possano controllare circa 2 o 3.

Di Più :

ssh-add -l controlla se esiste più di un'identificazione se sì, rimuovila con ssh-add -d "quel file chiave"


Grande aiuto Mark! Questo l'ha risolto anche per me.
Leachy Peachy

Era questo. Mi hai risparmiato un enorme mal di testa. Ora devo solo ricordarmi di eseguire ssh-add ...ogni volta che voglio cambiare i miei login github / ssh.
Cerin

Per qualche motivo ssh-add -d <keyfile>non funziona. (L'eliminazione manuale dei file ha fatto.) La cache che hai menzionato deve essere ricaricata manualmente in qualche modo. Come?
not2qubit

ssh-add -d-> "Impossibile aprire una connessione al tuo agente di autenticazione."
alex

È ssh-addstata la parte che ha fatto per me. Grazie!
rayryeng

160

Dopo aver cercato su Google per alcuni giorni, ho scoperto che questa è l'unica domanda simile alla mia situazione.

Tuttavia, ho appena risolto il problema! Quindi metto la mia risposta qui per aiutare chiunque altro alla ricerca di questo problema.

Ecco cosa ho fatto:

  1. Apri "Keychain Access.app" (puoi trovarlo in Spotlight o LaunchPad)

  2. Seleziona "Tutti gli elementi" nella categoria

  3. Cerca "git"

  4. Elimina ogni oggetto vecchio e strano

  5. Prova a premere di nuovo e ha FUNZIONATO


17
Pollice in alto amico. Sei un eroe.
Prince Bansal

1
Diavolo sì, finalmente, dopo aver lottato con innumerevoli chiavi SSH, questa è la risposta che ha funzionato! Sembra che l'accesso Mac e https utilizzi il portachiavi. Pazzo.
Patrick Chu

1
BENEDICA CHE STAI CERCANDO DI RISOLVERE QUESTO PER SETTIMANE
Jon Hendershot,

1
Sembra molto utile, ma non è chiaro cosa sia old & strange. Sto per rovinare un sacco di cose ..?
geoteoria

1
@geotheory Le old & strangecose significano gli elementi della vecchia data e l'email o il nome utente errati. Puoi ordinare la tabella per Date Modified.
Alice Chan

91

Se il problema si verifica su Windows, rimuovere le credenziali dalla cronologia di Windows.

  • Vai a Credential Manager
  • Vai a Credenziali di Windows
  • Elimina le voci in Credenziali generiche
  • Prova a connetterti di nuovo, questa volta dovrebbe chiederti il ​​nome utente e la password corretti.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

rimuovere le credenziali da git


2
Perfetto. Ricevo 403 l'accesso con un account che non uso più. Ora risolto.
Anton Epikhin,

1
per me è stato sufficiente cancellare solo le credenziali di github.com
Bart De Boeck

E lì puoi cambiare il tuo nome utente e qualsiasi cosa. Questo è il modo.
WesternGun

In realtà questo ha funzionato anche per me, ma cosa farei se avessi 2 account diversi?
an4s911

22

Su Mac, se disponi di più accessi a GitHub e non utilizzi SSH, forza l'accesso corretto utilizzando:

git remote set-url origin https://username@github.com/username/repo-name.git

Funziona anche se hai problemi con il push a un repository privato.


1
Grazie, per me ha funzionato. Mi è stata richiesta la password e sono stato in grado di eseguire il push dopo aver fornito la mia password. Molto apprezzato!
pixel

... ma questo non ha risolto il problema per me su Windows, solo su Mac
pixel

... ma il suggerimento di @Fahid sopra per ripulire le credenziali su Windows ha aiutato
pixel

Sei un eroe.
Vaibhav

Questa è la risposta corretta se abbiamo più progetti GitHub che appartengono a diversi account
Gangadhar JANNU

14

È dovuto a un conflitto.

Cancella tutte le chiavi da ssh-agent

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

Aggiungi la chiave ssh github

ssh-add   ~/.ssh/github

Ora dovrebbe funzionare.


3
inoltre ssh-add -Drimuove tutte le identità, può essere utile se l'agente entra in uno stato non valido.
Sam

6

Sto usando un Mac e il problema viene risolto eliminando il record GitHub dall'app di accesso al portachiavi: Ecco cosa ho fatto:

  1. Apri "Keychain Access.app" (puoi trovarlo in Spotlight o LaunchPad)
  2. Seleziona "Tutti gli elementi" nella categoria
  3. Cerca "git"
  4. Elimina tutti gli elementi vecchi e strani Prova a spingere di nuovo e ha FUNZIONATO

I passaggi precedenti vengono copiati da @spyar per facilità.


6

Trovo che la soluzione sia la stessa di @spyar, che è l' app Accesso Portachiavi che memorizza il vecchio nome utente.

Ci sono 2 soluzioni per questa situazione:

  1. Elimina le informazioni in Accesso portachiavi tramite
    • Apri l' app Accesso Portachiavi
    • Cerca gitHub
    • Elimina le credenziali corrispondenti

O

  1. Se usi vuoi usare la chiave ssh . Devi solo cambiare l'URL del repository da https

https://github.com/username/repo.git

in

git@github.com: username / repo.git

Spero che questo ti aiuti.


2

Recentemente ho riscontrato questo problema per un vecchio repository sulla mia macchina che era stato spinto verso l'alto utilizzando https. i passaggi 5 e 6 hanno risolto il mio problema reimpostando l'URL remoto per il mio repository dall'utilizzo dell'URL https all'URL ssh

controllando che il telecomando stia utilizzando l'URL https

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

quindi reimpostare l'origine per utilizzare l'URL ssh

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

verifica nuovo telecomando

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

potrebbe ora con successo git push -u origin

Non sono ancora sicuro di quale impostazione avrei cambiato che potrebbe aver causato il fallimento del push quando il telecomando è https ma questa era la soluzione al mio problema


ERRORE: autorizzazione a unrealcv / synth-computer-vision.git negata a monajalal. fatale: impossibile leggere dal repository remoto. Assicurati di disporre dei diritti di accesso corretti e che il repository esista.
Mona Jalal,

1

Ho avuto il tuo stesso problema. Dopo molto tempo trascorso su Google, ho scoperto che il mio errore era causato da più utenti che avevano aggiunto la stessa chiave nei loro account.

Quindi, ecco la mia soluzione: elimina la chiave ssh dell'utente sbagliato (posso farlo perché l'utente sbagliato è anche il mio account). Se l'utente sbagliato non è il tuo account, potresti dover cambiare la tua chiave ssh, ma non credo che questo accadrà.

E penso che il tuo problema possa essere causato da un errore di digitazione nel nome del tuo account.


0

Questo problema è causato anche da:

Se sei su un mac / linux e stai usando 'ControlMaster' nel tuo ~ / .ssh / config, potrebbero essere in esecuzione alcuni processi ssh control master.

Per trovarli, esegui:

ps aux | grep '\[mux\]'

E uccidi quelli rilevanti.


0

Anch'io mi sono imbattuto in questo, ciò che lo ha causato per me è che durante la clonazione del repository a cui stavo spingendo le mie modifiche, ho raccolto l'URL clone da una scheda in incognito senza accedere (non ho ancora idea di come si effettui). Ciò per qualche motivo ha portato Git a scegliere un altro account utente. Quando l'ho provato di nuovo da una pagina di accesso corretta, ha funzionato come al solito per me.


0

Ho riscontrato questo errore durante l'utilizzo di Travis CI per distribuire il contenuto , che comportava il push delle modifiche a un repository.

Alla fine ho risolto il problema aggiornando il token di accesso personale di GitHub associato all'account Travis con l' public_repoautorizzazione di accesso all'ambito:

Seleziona <code> public_repo </code>

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.