GitHub: autorizzazione negata (chiave pubblica). fatale: l'estremità remota ha riattaccato inaspettatamente


197

Ho seguito queste istruzioni per caricare un progetto.

Setup globale:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email tirenga@gmail.com
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:tirenga/tirenga.git
  git push origin master

Ma ottengo questo errore:

Autorizzazione negata (chiave pubblica). fatale: l'estremità remota ha riattaccato inaspettatamente

Risposte:


24

Per me il problema era l'esecuzione del clone tramite sudo.

Se cloni in una directory in cui hai il permesso utente (/ home / user / git) funzionerà bene.

(Spiegazione: l'esecuzione di un comando come superutente non funzionerà con la stessa chiave pubblica dell'esecuzione di un comando come utente. Pertanto Github ha rifiutato la connessione.)

Questa soluzione richiede che sia già stata impostata una chiave SSH: https://help.github.com/articles/generating-ssh-keys


1
questa soluzione sembra molto vicina a ciò che è già stato pubblicato da learner_19
Erik il

125

Ho dovuto aggiungere la mia chiave pubblica a github. https://help.github.com/articles/generating-ssh-keys


3
Nel caso in cui tu stia eseguendo una macchina linux, copiare il contenuto del file id_rsa.pub potrebbe essere difficile se stai usando emacs o nano. Prova a copiare con un editor di testo (Blocco note, TextEdit o gedit andrà bene). Se non ne possiedi uno, puoi usare vim.
Gokul NK,

4
@GokulNK L'altra alternativa è usare xclip, come raccomandato dalla pagina.
w4etwetewtwet,

7
cat ~/.ssh/id_rsa.pubpotrebbe essere un'opzione? : p
torr,

puoi usarlo pbcopy < ~/.ssh/id_rsa.pubin OS X e quindi incollarlo ( cmd+v) nella pagina di github.
user3648895,


28

dopo aver creato la coppia di chiavi RSA, è necessario aggiungerla a SSH utilizzando:

ssh-add ~/.ssh/id_rsa

o ovunque tu abbia creato la tua coppia di chiavi rsa.


Salvavita! Hai colpito il chiodo sulla testa. Grazie
Tash Pemhiwa,

D'accordo, è importante prima verificare se ssh-agent è in esecuzione (la documentazione di GitHub ne ha uno) e se la chiave viene aggiunta nel suo keyring. Qualcos'altro che vale la pena controllare, poiché potrebbe impedire l'utilizzo della chiave anche se si trova nel portachiavi di ssh-agent, è la giusta modalità di accesso per la chiave privata : dovrebbe essere 0600 ( chmod 600 ~/.ssh/id_rsa, in sostanza).
Chikamichi,

18

Digitare il comando seguente utilizzando il nome utente e il nome del repository:

git clone https://github.com/{user name}/{repo name}

in Ubuntu funziona perfettamente.


Penso che il protocollo https sia necessario per avere una connessione sicura, ecco perché funziona. Git @ github .. NON è sicuro per la macchina.
Timo

16

Ho avuto una soluzione dopo molto tempo nei tutorial.

Ho seguito il tutorial github su questo link -> https://help.github.com/articles/error-permission-denied-publickey e sono stato in grado di connettermi in ogni passaggio. Ma quando stavo provando a usare push -u origin master ho avuto questo errore:

Autorizzazione negata (chiave pubblica). fatale: impossibile leggere dal repository remoto.

Assicurati di disporre dei diritti di accesso corretti

Ecco come l'ho risolto !! Vai alla directory del progetto usando il Terminale e verificalo

$git remote -v

Otterrai qualcosa del genere:

origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (push)

Se stai usando qualcosa di diverso, allora git@github.com , apri il file di configurazione nella directory git digitando il comando:

vi .git/config

E configura la linea

[remote "origin"]

url = ssh://git@github.com/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/

Per me ha funzionato sostituendo git@github.com con <mioutente> @ github.com
Eduard Feicho,

Il comando "git remote -v" non è quello che avevo visto prima, e si è rivelato essere la chiave per capire perché uno dei miei repository funzionava, mentre l'altro stava restituendo "Autorizzazione negata (chiave pubblica)" quando ho provato a eseguire "git ls-remote". Molto utile. Grazie.
Kevin,

6

Nel mio caso, ho dovuto impostare la chiave pubblica per un altro utente, poiché ne avevo già una per il mio utente principale. una volta che ho cambiato utente ed eseguito i comandi nel link sopra sono stato in grado di eseguire l'installazione per il mio server di prova senza problemi.


Problema simile - Sono stato eseguito l'accesso come root (e ho ignorato questo) non come l'utente reale che è stato configurato con SSH. Impossibile impegnarsi a lavorare per nulla. Tornando al problema corretto risolto dall'utente!
Richard Hollis,

1
Assoluta mancanza di spiegazioni su come eseguire effettivamente la correzione.
Richard

Non avrei dovuto precisarlo, questo è per te, Richard! Stavo usando il mio account non root. Ho dovuto eseguire il comando dall'help della guida di github ( help.github.com/articles/generating-ssh-keys#platform-linux ) con il prefisso sudo.
Dan Power

5

Ho avuto questo problema, ma nessuna delle soluzioni sopra ha funzionato. Potrei clonare e recuperare ma non potevo spingere. Alla fine, ho capito che il problema era urlnel mio .git/config, dovrebbe essere:

git@github.com:<username>/<project>

(non ssh://github.com/<username>/<project>.gito https://github.com/<username>/<project>.git).


2
Per una connessione SSH, la git@parte è la magia. Quindi ssh://git@github.com/username/project.gitfunziona anche.
vescovo

.git è davvero importante. Questa soluzione funziona perfettamente.
Onur Göker,

5

Dato che nessuna delle risposte qui ha funzionato per me, ho finalmente rintracciato il mio problema collegandomi a Bitbucket (o Github, non importa in questo caso) con ssh -vT git@bitbucket.org.

Nel mio caso, l'errore era dovuto all'uso di una chiave DSA invece di RSA, e apparentemente il mio client SSH non lo consente più.

debug1: Saltare la chiave ssh-dss /c/Users/USER/.ssh/id_dsa per non in PubkeyAcceptedKeyTypes

La soluzione era aggiungere questo a .ssh / config:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

Questo aggiunge elegantemente il tipo di chiave ssh-dss a tutti i tipi di chiave pubblica accettati esistenti e dopo aver fatto ciò, git può ora ssh in Bitbucket nessun problema.


Questa è stata la soluzione per me su una macchina instabile Debian nel dicembre 2015. L'ho limitato a "Host bitbucket.org" poiché avevo già una voce per forzare la selezione della mia identità.
Bitmusher,

3

Il mio problema era che stavo provando a dare alla mia chiave ssh un NOME SPECIFICO ogni volta che entravo ssh-keygensul mio terminale mac.

Ho risolto il problema semplicemente lasciando il nome che "ssh-keygen" genera = id_rsa. Finirai con 2 chiavi nella tua cartella .ssh su un mac id_rsa, che è la tua chiave privata, e la id_rsa.pub, che è la tua chiave pubblica. Quindi ho copiato e salvato il codice dalle id_rsa.pubimpostazioni del mio account GitHub, e basta. Problema risolto.


Stessa cosa per me. Lasciare il nome vuoto risolto il problema. Grazie.
Berk,

Amico, hai fatto la mia giornata! 2 settimane con console a causa di nomi chiave specifici! Grazie!
eilas,

Sono contento che abbia aiutato! @eilas
Paopao

Il motivo per cui funziona è perché sulla maggior parte dei sistemi le chiavi private di default ( ~/.ssh/id_rsa, ~/.ssh/id_dsae ~/.ssh/identity) vengono aggiunti automaticamente al agente di autenticazione SSH.
Maffo,


2

L'aggiunta di chiave pubblica è la soluzione. Per generare chiavi ssh: https://help.github.com/articles/generating-ssh-keys ha istruzioni dettagliate.

Tuttavia, il problema può persistere se la chiave non viene generata nel modo corretto. Ho trovato anche questo un link utile: https://help.github.com/articles/error-permission-denied-publickey

Nel mio caso il problema era che stavo generando il tasto ssh senza usare sudo ma quando usavo i comandi git avevo bisogno di usare sudo. Questo commento nel link sopra "Se si generano chiavi SSH senza sudo, quando si tenta di utilizzare un comando come sudo git push, non si utilizzerà la chiave SSH generata." mi ha aiutato.

Quindi, la soluzione era che dovevo usare sudo sia con i comandi di generazione dei tasti che con i comandi git. O per altri, quando non hanno bisogno di sudo da nessuna parte, non usarlo in nessuno dei due passaggi. (comandi di generazione chiave e git).


1

Ho riscontrato un problema simile quando eseguivo SSH o Git Clone in Windows. I seguenti risultati aiutano a risolvere il mio problema:

  • Quando si esegue "rhc setup" o altri metodi ssh per generare la chiave ssh, verrà creato il file della chiave privata id_rsa nella cartella .ssh nella cartella principale, l'impostazione predefinita è C: \ User \ UserID
  • Git per Windows ha la sua cartella .ssh nella sua directory di installazione. Quando esegui git / ssh, cercherà il file della chiave privata id_rsa in questa cartella
  • Risolto il problema copiando id_rsa dalla cartella .ssh della cartella principale nella cartella .ssh nella directory di installazione di git

Inoltre, penso che ci sia un modo per "dire" a git di usare la cartella predefinita .ssh nella cartella home ma devo ancora capire come.


1

Per me ha funzionato così:

In GitHub ho cambiato il sshlink in https, e quindi ho dato i seguenti comandi:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master

0

Usa Ubuntu su Windows Store

sottosistema windows per linux

, la tua git push funzionerà su diversi account.


0

Se stai usando una macchina linux, controlla,

  • hai installato Openssh
  • se lo fai, allora hai una chiave pubblica esistente altrimenti dovrai generarne una.
  • è la tua chiave pubblica aggiunta al tuo account github.

Generare nuove chiavi SSH e aggiungerle al mio account Github ha risolto il mio problema. Puoi guardare in questa pagina per maggiori dettagli. GitHelp .


0

Puoi provare a cambiare la connessione del tipo in branch da ssh a https.

  1. nano project_path/.git/config
  2. Sostituisci git@github.com:username/repository.gitconhttps://username@github.com/username/repository_name.git
  3. Salva file ctrl+o

Dopodiché puoi provare git pullsenza publickey



-1

Un modo rapido per risolvere questo problema se si utilizza un Mac è disconnettersi dall'app OSX e accedere nuovamente.


-1

Il mio problema era che non funzionava con una passphrase sulla mia chiave privata.

Spero che aiuti qualcuno.



-3

Ho provato le soluzioni menzionate ma ancora fallito. Ho trovato la soluzione che alla fine ha funzionato per me qui : rimuovere e aggiungere nuovamente il collegamento remoto


-4

Ho avuto lo stesso problema su Windows. Sono passato da SSH a HTTPS e ho eseguito Git PUSH.

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

Riuscito! spero che questo ti aiuti.


Mentre questo può essere un problema, non risolve il problema iniziale.
Maffo,
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.