github: non sono disponibili metodi di autenticazione supportati


98

Uso GitHub e in passato ho aggiunto e sincronizzato file con successo sul mio laptop.

di recente ho iniziato a ricevere " PuTTY Fatal Error: Disconnected: Nessun metodo di autenticazione supportato disponibile " dopo l'esecuzione:

git pull origin master (o push)

però

ssh git@github.com restituisce la risposta corretta: ERRORE: Ciao nome utente! Ti sei autenticato con successo, ma GitHub non fornisce l'accesso alla shell Connessione a github.com chiusa.

dopo aver scavato su GitHub ho trovato questo morcel:

Non sono disponibili metodi di autenticazione supportati Dovresti essere a conoscenza della variabile d'ambiente GIT_SSH, che è usata da git per trovare il tuo client che parla ssh, se ssh non funziona per te. L'installazione di git potrebbe utilizzare plink.exe (tramite GIT_SSH) per eseguire l'autenticazione. In tal caso, assicurati di avere pageant.exe in esecuzione e che la chiave creata per GitHub sia caricata al suo interno. Questo fornisce la chiave per plink.exe; senza di esso, si verificherà l'errore precedente.

Non sono sicuro di cosa sia plink.exe o peagant.exe .. e il fatto che ssh git@github.com sembri autenticarsi correttamente mi fa chiedere quale sia la soluzione migliore qui .. Certamente non voglio complicare eccessivamente la mia configurazione in caso contrario necessario.

Risposte:


101

Puoi creare un file denominato ".profile" nella tua home directory, per me è C: \ Users \ [user]

All'interno di quel file, inserisci la seguente riga di codice:

GIT_SSH="/usr/bin/ssh.exe"

Questo imposterà la variabile d'ambiente GIT_SSH per usare il client ssh incluso con git.

Lo script .profile viene eseguito all'avvio della riga di comando di Git Bash.

Modifica: questo è il mio .profile. Ti chiederà la password la prima volta che avvii il prompt dei comandi di git, quindi la ricorderà da quel momento in poi, fino al riavvio del computer. Molto utile in modo da non dover continuare a inserire la password ogni volta che vuoi fare qualcosa.

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

8
+1 Non ho avuto altro che problemi durante l'utilizzo di Putty / Pageant per le esigenze ssh di git. Usare il client ssh integrato fa miracoli. Questo spiega perché ssh git@github.com ritorni bene se lo esegui da solo, ma lasciare che git usi gli strumenti configurati (Putty / Pageant) no.
enriquein

14
Per me è solo GIT_SSH = "/ bin / ssh.exe" (su Windows). Grazie!
Martin Konicek

1
@ Justin stai usando il prompt mingw32?
Rex Morgan,

2
Utilizzando cygwin in Windows 7, la risposta di cui sopra ha funzionato ma avevo bisogno di GIT_SSHto .bash_profileand not.profile
Gabe

2
Nel mio caso con Windows 10 che utilizza Git Bash èGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH

31

Utilizzando TortoiseGit

TortoiseGit> Impostazioni ... Rete ... Client SSH: C:\Program Files\Git\usr\bin\ssh.exe

La mia posizione varia. Su un computer era inC:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit


5
Grazie. questo ha funzionato. nota: potresti dover cercare esattamente dove risiede "ssh.exe" su una determinata macchina. per me era C: \ Program Files \ Git \ usr \ bin \ ssh.exe (probabilmente su una macchina
obsoleta

10

"... non sono sicuro di cosa sia plink.exe o peagant.exe ..."

Da quando chiedi: plink e pageant fanno parte della suite PuTTY, che è un'implementazione di SSH che supporta Linux e Windows ed è completamente dominante su Windows.

SSH

Secure Shell (SSH) è un protocollo di rete crittografico per proteggere la comunicazione dei dati. Stabilisce un canale sicuro su una rete non sicura in un'architettura client-server, collegando un'applicazione client SSH con un server SSH. Le applicazioni comuni includono l'accesso dalla riga di comando remota, l'esecuzione di comandi remoti, ma qualsiasi servizio di rete può essere protetto con SSH.

se hai mai usato Telnet, è così (ma più sicuro): ti permette di accedere da remoto alla shell bash (riga di comando) di un host Linux.

PuTTY

PuTTY è un emulatore di terminale gratuito e open source, una console seriale e un'applicazione di trasferimento file di rete. Supporta diversi protocolli di rete, inclusi SCP, SSH, Telnet, rlogin ...

Su Windows è il software dominante per l'accesso remoto alla riga di comando di un host Linux con il protocollo SSH (sopra). In Windows, le estensioni .exe sono per gli eseguibili. Quindi quelle note su plink.exe e pageant.exe probabilmente non si applicano se sei in Linux . PuTTY include

Plink : un'interfaccia a riga di comando per i back-end PuTTY

Pageant : un agente di autenticazione SSH per PuTTY, PSCP e Plink

Da ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

Quando la chiave pubblica è presente all'estremità remota e la chiave privata corrispondente è presente all'estremità locale, non è più necessario digitare la password ... per una maggiore sicurezza, la chiave privata stessa può essere bloccata con una passphrase.

Quindi gitHub è ospitato su una macchina Linux e utilizza SSH per proteggere la connessione. SSH si autentica con password o chiavi, molti host (GitHub?) Autenticano solo con le chiavi. La tua configurazione sta apparentemente tentando di autenticarsi con una chiave. Le chiavi e gli host non sono uno per uno: puoi avere due chiavi per lo stesso host e / o due host per la stessa chiave, quindi devono essere gestiti. Se sei in Windows, probabilmente la tua sessione SSH è accessibile tramite plink e le tue chiavi sono probabilmente gestite da Pageant.

Importa la chiave che ti serve ogni volta che carichi Pageant. Se hai seguito le guide che dicevano "importa la tua chiave" e hai visto che ha funzionato, ma ora non funziona, vedi Capitolo 9: Usare Pageant per l'autenticazione .

Un ultimo consiglio se sei su Windows: potresti avere più istanze della suite PuTTY installate da vari strumenti. TortoiseGit, ad esempio, installa il proprio.


8

Ho riscontrato questo problema perché GIT_SSHindicavo la versione TortoiseSVN di Plink.exe. L'ho cambiato in modo che puntasse alla versione TortoiseGit, riavviato cmd e ha funzionato.

Non ricordo esattamente, ma la versione TortoiseSVN potrebbe essere stata la versione a 32 bit e la versione TortoiseGit era a 64 bit (situata in Program Files, non Program Files (x86)).

Ricontrolla il tuo file GIT_SSHenv var.

Preferisco usare git con normal cmd.exe(in Console2 ovviamente)


Ti ricordi correttamente; Ho avuto lo stesso problema, con GIT_SSH che punta alla versione TortoiseSVN a 32 bit di TortoisePlink.exe. Spostarlo nella versione di TortoiseGit ha funzionato.
nitwit

6

Per utenti TortoiseGit su Windows

Inizialmente, ero solito configurare la maggior parte dei miei repository Github / Bitbucket utilizzando gli URL del repository SSH poiché (originariamente) era l'unico modo conveniente per impedire a TortoiseGit di richiedere la tua password ad ogni singola azione.

Ma impostare TortoiseGit in questo modo è sempre stato doloroso. Ogni volta che mi ci sono volute ore per impostare correttamente, poiché le opzioni di installazione predefinite non sembravano mai funzionare (anche a partire dal 2016, sheesh!).

Ma TortoiseGit ora ha una migliore gestione delle password per HTTPS e Github consiglia effettivamente di utilizzare URL HTTPS ove possibile.

URL SSH: git@github.com:User/repo-name.git

URL HTTPS: https://github.com/User/repo-name.git

I vantaggi di HTTPS sono:

  • Nessuna gestione o generazione di chiavi SSH
  • Non è necessario essere pageant.execostantemente in esecuzione (che richiede la password ad ogni avvio)
  • Utilizzando TortoiseGit dall'Australia, trovo che i cloni su HTTPS siano 5-10 volte più veloci di SSH

+ "git config --global http.sslVerify false"
Mike

5

Se stai utilizzando Pageant e ricevi l'errore descritto nella domanda dopo aver riavviato il PC (o altrimenti chiuso e riaperto Pageant):

L'errore può essere causato da Pageant che non ha caricato attivamente la chiave SSH di GitHub. Per impostazione predefinita, Pageant NON carica automaticamente le chiavi della sessione precedente all'avvio.

Per caricare la chiave:

  1. Apri Pageant. (Su Windows, se Pageant è in esecuzione, avrà un'icona nella barra delle applicazioni. Fare doppio clic su di essa.)
  2. Fare clic sul pulsante Aggiungi chiave e procedere con l'aggiunta della chiave SSH GitHub esistente.

Per evitare questo problema in futuro, puoi configurare Pageant in modo che carichi automaticamente la tua chiave all'avvio. (Pageant ti chiederà automaticamente una password se la tua chiave è protetta da password.)

Passaggi per farlo (supponendo che tu abbia già Pageant configurato per essere eseguito all'avvio di Windows):

  1. Trova il collegamento utilizzato da Windows per eseguire Pageant all'avvio di Windows. (Potrebbe essere nella cartella Avvio, che può essere aperta da Start> Esegui> shell:startup)
  2. Nella finestra di dialogo Proprietà del collegamento, aggiungi il percorso completo e il nome del file della chiave SSH al campo "Destinazione".

Riferimento e dettagli completi: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html


4

Il mio problema era che stavo tentando di utilizzare il mio nome utente GitHub. Apparentemente quando usi Github (o è una cosa Git?) , Se usi l'autenticazione basata su chiave, devi impostare il tuo nome utente su git.

Non sono sicuro del motivo per cui hai bisogno di un nome utente - forse qualcuno più esperto può spiegarlo?


Quando si clona un repository privato, sarà un URL come git@github.com: nomeutente / Repository.git. Non sono nemmeno del tutto sicuro della scienza dietro di esso, ma sembra che git sia un nome utente generico per ogni account Github
Inverno

1
PLink / Pageant funziona bene. Questo è il vero problema e usare qualcosa di simile ssh://git@github.com/myname/repo.gitfunzionerà benissimo. Bel lavoro. Per quanto riguarda il motivo, presumo sia per bloccare la sicurezza. L'utente "git" ha il suo login disabilitato, quindi nessuno può entrare nel sistema in questo modo. Devono avere una chiave valida anche per parlare con Github, e una volta che hanno una chiave valida, possono abbinarla all'utente per accedere.
ChokesMcGee

2

Sulla mia macchina Windows 7 che esegue Github per Windows utilizzando git versione 1.8.3.msysgit.0. Ho scoperto che l'aggiornamento della mia variabile di ambiente di sistema GIT_SSH a C: \ Program Files (x86) \ Git \ bin \ ssh.exe sembrava fare il trucco. Questo ha anche risolto il mio problema con il contatto con il repository git di OpenShift.


2

Ha funzionato per me su Windows 8: la variabile GIT_SSH puntava a plink.exe, modificata nelle impostazioni di sistema in modo che punti al binario ssh e questo ha risolto il problema. Per scoprire il percorso completo di ssh, eseguire:

where ssh

2

Per risolvere questo problema, questo è quello che ho fatto.

Stavo usando Git Bash su Windows 10

Ho avviato Pageant, premuto Aggiungi tasto,

inserisci qui la descrizione dell'immagine

navigato nella cartella C: \ Users \ nomeutente \ .ssh e ha scelto la mia chiave

inserisci qui la descrizione dell'immagine

Quindi provo a fare un git push e questa volta ha funzionato.


Ricorda, probabilmente dovrai farlo ogni volta che riavvii il tuo PC Windows: potresti mettere Pageant nella cartella di avvio come scorciatoia con l'argomento della riga di comando corretto per il tuo file della chiave privata, ma se hai impostato una password sul tuo chiave privata quando l'hai creata, dovrai ricordarti di fare clic con il pulsante destro del mouse sull'icona Pageant nella barra degli strumenti, selezionare "Aggiungi chiave" e inserirla dopo ogni riavvio.
webbje


1

Ho riscontrato lo stesso problema, tuttavia la soluzione GIT_SSH sembrava funzionare una volta per me. Dopo un riavvio del computer mi sono reso conto che era qualcos'altro, poiché sono stato in grado di clonare i miei repository privati ​​senza problemi utilizzando Git Bash o il prompt dei comandi, ma non in Sublime Text 3 con il plugin SublimeGit. La mia soluzione era semplice ed è in realtà ciò che @BlueRaja - Danny Pflughoeft menzionato ma ho pensato che potesse usare una direzione;)

Fondamentalmente devi solo modificare ~/.ssh/confige assicurarti che il nome utente sia git. Puoi anche dirgli di utilizzare una chiave SSH specifica per Github: il mio ~/.ssh/configfile ha il seguente aspetto:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

Ho una chiave specifica per Github a causa del numero di altre cose che faccio durante la mia giornata, ma se ne hai solo una, di solito sarà ~/.ssh/id_rsa.pubcome Github spiega qui .

So che ognuno ha una soluzione diversa, ma lo lascio qui per chiunque possa leggere questo articolo senza una soluzione. In bocca al lupo!


1

Ho ricevuto questo errore durante l'utilizzo di TortoiseGit per clonare un repository da GitHub. Risolto il problema facendo clic su "Carica Putty Key" e selezionando un file chiave (* .pkk) nella finestra di dialogo di clonazione di Git.



0

Ho riscontrato questo problema (ssh diretto ha funzionato, ma git pull non è riuscito) perché il mio telecomando git non era quello che pensavo fosse.

Sì, sì, lo so che è uno stupido errore, ma succede e vale la pena controllare.

Uso git remote -v


0

Ho avuto un problema simile dopo aver aggiornato GitExtensions alla versione 3.3.0.7719

In qualche modo ha ripristinato le mie impostazioni di autenticazione per utilizzare PuTTY invece di OpenSSH.

In quella versione ecco il menu che ho usato per abilitare nuovamente OpenSSH:

inserisci qui la descrizione dell'immagine

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.