github: Keine unterstützten Authentifizierungsmethoden verfügbar

97

Ich benutze Github und habe in der Vergangenheit erfolgreich Dateien auf meinem Laptop hinzugefügt und synchronisiert.

Seit kurzem erhalte ich nach dem Ausführen " PuTTY Fatal Error: Disconnected: Keine unterstützten Authentifizierungsmethoden verfügbar ".

Git Pull Origin Master (oder Push)

jedoch

ssh [email protected] gibt die richtige Antwort zurück: FEHLER: Hallo Benutzername! Sie haben sich erfolgreich authentifiziert, aber GitHub bietet keinen Shell-Zugriff. Die Verbindung zu github.com wurde geschlossen.

Nachdem ich mich auf Github umgesehen hatte, fand ich dieses Morcel:

Keine unterstützten Authentifizierungsmethoden verfügbar Sie sollten die Umgebungsvariable GIT_SSH kennen, die von git verwendet wird, um Ihren ssh-sprechenden Client zu finden, wenn ssh für Sie nicht funktioniert. Die Git-Installation verwendet möglicherweise plink.exe (über GIT_SSH), um die Authentifizierung durchzuführen. Wenn ja, stellen Sie sicher, dass pageant.exe ausgeführt wird und der Schlüssel, den Sie für github erstellt haben, darin geladen ist. Dies liefert den Schlüssel zu plink.exe; Ohne sie tritt der obige Fehler auf.

Ich bin mir nicht sicher, was plink.exe oder peagant.exe ist. Und die Tatsache, dass ssh [email protected] sich korrekt zu authentifizieren scheint, lässt mich fragen, was die beste Lösung hier ist. Ich möchte mein Setup auf keinen Fall überkomplizieren, wenn nicht notwendig.

Sonic Soul
quelle

Antworten:

100

Sie können eine Datei mit dem Namen ".profile" in Ihrem Home-Verzeichnis erstellen. Für mich ist das C: \ Users \ [user]

Fügen Sie in diese Datei die folgende Codezeile ein:

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

Dadurch wird die Umgebungsvariable GIT_SSH so eingestellt, dass der in git enthaltene ssh-Client verwendet wird.

Das .profile-Skript wird ausgeführt, wenn Sie Ihre Git Bash-Befehlszeile starten.

Bearbeiten: Dies ist mein .profile. Sie werden beim ersten Start der git-Eingabeaufforderung nach Ihrem Kennwort gefragt und von da an daran erinnert, bis Sie Ihren Computer neu starten. Sehr praktisch, damit Sie Ihr Passwort nicht jedes Mal eingeben müssen, wenn Sie etwas tun möchten.

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
Rex Morgan
quelle
8
+1 Ich hatte nur Probleme bei der Verwendung von Putty / Pageant für die SSH-Bedürfnisse von Git. Die Verwendung des eingebauten SSH-Clients wirkt Wunder. Dies erklärt, warum ssh [email protected] gut zurückgibt, wenn Sie es selbst ausführen, aber git die konfigurierten Tools (Putty / Pageant) verwenden lässt.
Enriquein
14
Für mich ist das nur GIT_SSH = "/ bin / ssh.exe" (unter Windows). Vielen Dank!
Martin Konicek
1
@ Justin Verwenden Sie die Eingabeaufforderung mingw32?
Rex Morgan
2
Unter Verwendung von Cygwin in Windows 7 funktionierte die obige Antwort, aber ich musste GIT_SSHzu .bash_profileund nicht.profile
Gabe
2
In meinem Fall mit Windows 10 mit Git Bash ist esGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH
31

Verwenden von TortoiseGit

TortoiseGit> Einstellungen ... Netzwerk ... SSH-Client: C:\Program Files\Git\usr\bin\ssh.exe

Lage meine variieren. Auf einem Computer war es inC:\Program Files (x86)\Git\bin\ssh.exe

Schildpatt

Joseph Dykstra
quelle
5
Vielen Dank. das hat funktioniert. Hinweis: Möglicherweise müssen Sie genau nach dem Ort suchen, an dem sich 'ssh.exe' auf einem bestimmten Computer befindet. Für mich war es C: \ Programme \ Git \ usr \ bin \ ssh.exe (wahrscheinlich auf einem veralteten Computer)
pestophagous
10

"... nicht sicher, was plink.exe oder peagant.exe ist ..."

Da fragen Sie: plink & pageant sind Teil der PuTTY-Suite, einer Implementierung von SSH, die Linux & Windows unterstützt und unter Windows vollständig dominiert.

SSH

Secure Shell (SSH) ist ein kryptografisches Netzwerkprotokoll zur Sicherung der Datenkommunikation. Es richtet einen sicheren Kanal über ein unsicheres Netzwerk in einer Client-Server-Architektur ein und verbindet eine SSH-Client-Anwendung mit einem SSH-Server. Zu den gängigen Anwendungen gehören die Remote-Befehlszeilenanmeldung und die Ausführung von Remotebefehlen. Jeder Netzwerkdienst kann jedoch mit SSH gesichert werden.

Wenn Sie jemals Telnet verwendet haben, ist dies so (aber sicherer): Sie können remote auf die Bash-Shell (Befehlszeile) eines Linux-Hosts zugreifen.

Kitt

PuTTY ist ein kostenloser Open-Source-Terminalemulator, eine serielle Konsole und eine Netzwerk-Dateiübertragungsanwendung. Es unterstützt verschiedene Netzwerkprotokolle, darunter SCP, SSH, Telnet, rlogin ...

Unter Windows ist es die dominierende Software für den Remotezugriff auf die Befehlszeile eines Linux-Hosts unter dem SSH-Protokoll (oben). In Windows gelten EXE-Erweiterungen für ausführbare Dateien. Daher gelten diese Hinweise zu plink.exe & pageant.exe wahrscheinlich nicht, wenn Sie unter Linux arbeiten . PuTTY beinhaltet

Plink : Eine Befehlszeilenschnittstelle zum PuTTY-Backend

Festzug : ein SSH-Authentifizierungsagent für PuTTY, PSCP und Plink

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

Wenn der öffentliche Schlüssel auf der Remote-Seite vorhanden ist und der entsprechende private Schlüssel auf der lokalen Seite vorhanden ist, ist die Eingabe des Kennworts nicht mehr erforderlich. Für zusätzliche Sicherheit kann der private Schlüssel selbst mit einer Passphrase gesperrt werden.

Github wird also auf einem Linux-Computer gehostet und verwendet SSH, um die Verbindung zu sichern. SSH authentifiziert sich entweder mit Passwörtern oder Schlüsseln, viele Hosts (Github?) Authentifizieren sich nur mit Schlüsseln. Ihr Setup versucht anscheinend, sich mit einem Schlüssel zu authentifizieren. Schlüssel und Hosts sind nicht eins zu eins: Sie können zwei Schlüssel für denselben Host und / oder zwei Hosts für denselben Schlüssel haben, daher müssen sie verwaltet werden. Wenn Sie unter Windows arbeiten, wird auf Ihre SSH-Sitzung wahrscheinlich über plink zugegriffen, und Ihre Schlüssel werden wahrscheinlich von Pageant verwaltet.

Importieren Sie den Schlüssel, den Sie jedes Mal benötigen, wenn Sie Pageant laden. Wenn Sie Anleitungen mit der Aufschrift "Importieren Sie Ihren Schlüssel" befolgt haben und festgestellt haben, dass dies funktioniert, aber jetzt nicht funktioniert, lesen Sie Kapitel 9: Verwenden von Pageant zur Authentifizierung .

Ein letzter Tipp unter Windows: Möglicherweise sind mehrere Instanzen der PuTTY-Suite von verschiedenen Tools installiert. TortoiseGit installiert beispielsweise eine eigene.

woodvi
quelle
8

Ich habe dieses Problem festgestellt, weil ich GIT_SSHauf die TortoiseSVN-Version von verwiesen habe Plink.exe. Ich habe es geändert, um auf die TortoiseGit-Version zu verweisen, cmd neu gestartet und es hat funktioniert.

Ich kann mich nicht genau erinnern, aber die TortoiseSVN-Version war möglicherweise eine 32-Bit-Version, und die TortoiseGit-Version war eine 64-Bit-Version (befindet sich in Program Files, nicht Program Files (x86)).

Überprüfen Sie Ihre GIT_SSHUmgebung var.

Ich bevorzuge git mit normal cmd.exe(natürlich in Console2)

Vaughan
quelle
Du erinnerst dich richtig; Ich hatte das gleiche Problem, wobei GIT_SSH auf die 32-Bit-TortoiseSVN-Version von TortoisePlink.exe zeigte. Die Umstellung auf die TortoiseGit-Version hat funktioniert.
Trottel
6

Für TortoiseGit-Benutzer unter Windows

Ursprünglich habe ich die meisten meiner Github / Bitbucket-Repositorys mithilfe der SSH-Repository-URLs eingerichtet, da dies (ursprünglich) die einzig bequeme Möglichkeit war, zu verhindern, dass TortoiseGit bei jeder einzelnen Aktion zur Eingabe Ihres Kennworts auffordert.

Aber TortoiseGit auf diese Weise einzurichten war immer haarsträubend schmerzhaft. Jedes Mal, wenn ich Stunden brauchte, um mich richtig einzurichten, schienen die Standardinstallationsoptionen nie zu funktionieren (sogar ab 2016, meine Güte!).

TortoiseGit bietet jetzt eine bessere Kennwortverwaltung für HTTPS, und Github empfiehlt, wo immer möglich , HTTPS-URLs zu verwenden.

SSH-URL: [email protected]:User/repo-name.git

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

Die Vorteile von HTTPS sind:

  • Kein Verwalten oder Generieren von SSH-Schlüsseln
  • Keine Notwendigkeit, pageant.exeständig ausgeführt zu werden (die bei jedem Start Ihr Passwort anfordert)
  • Mit TortoiseGit aus Australien stelle ich fest, dass Klone über HTTPS 5-10x schneller sind als SSH
Simon East
quelle
+ 'git config --global http.sslVerify false'
Mike
5

Wenn Sie Pageant verwenden und nach dem Neustart Ihres PCs (oder dem sonstigen Schließen und erneuten Öffnen von Pageant) den in der Frage beschriebenen Fehler erhalten:

Der Fehler kann dadurch verursacht werden, dass Pageant Ihren GitHub-SSH-Schlüssel nicht aktiv geladen hat. Standardmäßig lädt Pageant die Schlüssel der vorherigen Sitzung beim Start NICHT automatisch.

So laden Sie den Schlüssel:

  1. Öffnen Sie Festzug. (Wenn Windows unter Windows ausgeführt wird, wird in der Taskleiste ein Symbol angezeigt. Doppelklicken Sie darauf.)
  2. Klicken Sie auf die Schaltfläche Schlüssel hinzufügen und fahren Sie mit dem Hinzufügen Ihres vorhandenen GitHub-SSH-Schlüssels fort.

Um dieses Problem in Zukunft zu vermeiden, können Sie Pageant so konfigurieren, dass Ihr Schlüssel beim Start automatisch geladen wird. (Pageant fordert Sie automatisch zur Eingabe eines Passworts auf, wenn Ihr Schlüssel passwortgeschützt ist.)

Schritte dazu (vorausgesetzt, Sie haben Pageant bereits so konfiguriert, dass es beim Start von Windows ausgeführt wird):

  1. Suchen Sie die Verknüpfung, die Windows zum Ausführen von Pageant beim Start von Windows verwendet. (Möglicherweise befindet es sich im Startordner, der über Start> Ausführen> geöffnet werden kann. shell:startup)
  2. Hängen Sie im Dialogfeld "Eigenschaften" der Verknüpfung den vollständigen Pfad und Dateinamen der SSH-Schlüsseldatei an das Feld "Ziel" an.

Referenz und vollständige Details: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

Jon Schneider
quelle
4

Mein Problem war, dass ich versuchte, meinen Github-Benutzernamen zu verwenden. Wenn Sie Github verwenden (oder ist es eine Git-Sache?) , Wenn Sie eine schlüsselbasierte Authentifizierung verwenden, müssen Sie anscheinend Ihren Benutzernamen auf setzen git.

Ich bin mir nicht sicher, warum Sie überhaupt einen Benutzernamen benötigen - vielleicht kann jemand, der besser informiert ist, das erklären?

BlueRaja - Danny Pflughoeft
quelle
Beim Klonen eines privaten Repositorys handelt es sich um eine URL wie [email protected]: Benutzername / Repository.git. Ich bin mir auch nicht ganz sicher, welche Wissenschaft dahinter steckt, aber es scheint, dass Git ein generischer Benutzername für jeden Github-Account ist
Winter,
1
PLink / Pageant funktioniert gut. Dies ist das eigentliche Problem, und die Verwendung von so etwas ssh://[email protected]/myname/repo.gitwird großartig funktionieren. Gute Arbeit. Ich gehe davon aus, dass es darum geht, die Sicherheit zu sperren. Für den Benutzer 'git' ist die Anmeldung deaktiviert, sodass niemand auf diese Weise in das System eindringen kann. Sie müssen einen gültigen Schlüssel haben, um überhaupt mit Github sprechen zu können, und sobald sie einen gültigen Schlüssel haben, können sie ihn mit dem Benutzer
abgleichen
2

Auf meinem Windows 7-Computer, auf dem Github für Windows mit der Git-Version 1.8.3.msysgit.0 ausgeführt wird. Ich fand, dass das Aktualisieren meiner Systemumgebungsvariablen GIT_SSH auf C: \ Programme (x86) \ Git \ bin \ ssh.exe den Trick zu tun schien. Dies hat auch mein Problem mit der Kontaktaufnahme mit OpenShifts Git-Repo behoben.

atorres757
quelle
2

Funktionierte für mich unter Windows 8: Die Variable GIT_SSH zeigte auf plink.exe, wurde in den Systemeinstellungen so geändert, dass sie auf die SSH-Binärdatei verweist, und das hat das Problem behoben. Um den vollständigen Pfad zum SSH herauszufinden, führen Sie Folgendes aus:

where ssh
Dmitriy
quelle
2

Um dieses Problem zu beheben, habe ich Folgendes getan.

Ich habe Git Bash unter Windows 10 verwendet

Ich startete Pageant, drückte Add Key,

Geben Sie hier die Bildbeschreibung ein

Navigierte zum Ordner C: \ Users \ username \ .ssh und wählte meinen Schlüssel

Geben Sie hier die Bildbeschreibung ein

Ich versuche dann einen Git Push zu machen und diesmal hat es funktioniert.

Lismore
quelle
Denken Sie daran, dass Sie dies wahrscheinlich jedes Mal tun müssen, wenn Sie Ihren Windows-PC neu starten. Möglicherweise legen Sie Pageant als Verknüpfung mit dem richtigen Befehlszeilenargument für Ihre private Schlüsseldatei in Ihrem Startordner ab, aber wenn Sie ein Kennwort für Ihren festgelegt haben Wenn Sie den privaten Schlüssel erstellt haben, müssen Sie daran denken, mit der rechten Maustaste auf das Festzugssymbol in Ihrer Taskleiste zu klicken, "Schlüssel hinzufügen" auszuwählen und ihn nach jedem Neustart auszufüllen.
Webbje
1

Ich bin auf dasselbe Problem gestoßen, aber die GIT_SSH-Lösung schien einmal für mich zu funktionieren. Nach einem Neustart des Computers wurde mir klar, dass es sich um etwas anderes handelte, da ich meine privaten Repositorys problemlos mit Git Bash oder der Eingabeaufforderung klonen konnte, jedoch nicht in Sublime Text 3 mit dem SublimeGit-Plugin. Meine Lösung war einfach und ist tatsächlich das, was @BlueRaja - Danny Pflughoeft erwähnte, aber ich dachte, es könnte eine Richtung gebrauchen;)

Grundsätzlich müssen Sie nur ~/.ssh/configden Benutzernamen bearbeiten und sicherstellen git. Sie können auch festlegen, dass ein bestimmter SSH-Schlüssel für Github verwendet werden soll. Meine ~/.ssh/configDatei sieht folgendermaßen aus:

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

Ich habe einen bestimmten Schlüssel für Github aufgrund der Anzahl anderer Dinge, die ich im Laufe meines Tages mache, aber wenn Sie nur einen haben, wird es normalerweise so sein, ~/.ssh/id_rsa.pubwie Github es hier erklärt .

Ich weiß, dass jeder eine andere Lösung hat, aber ich werde dies hier jedem überlassen, der auf diesen Artikel ohne Korrektur stößt. Viel Glück!

Winter
quelle
1

Ich habe diesen Fehler erhalten, als ich TortoiseGit zum Klonen eines Repositorys von GitHub verwendet habe. Behoben durch Klicken auf "Putty Key laden" und Auswählen einer Schlüsseldatei (* .pkk) im Git-Klon-Dialog.

Zymotik
quelle
0

Ich habe dieses Problem (direktes SSH hat funktioniert, aber Git Pull ist fehlgeschlagen), weil meine Git-Fernbedienung nicht das ist, was ich dachte.

Ja, ja, ich weiß, dass es ein dummer Fehler ist, aber es passiert und es lohnt sich, es zu überprüfen.

Verwenden git remote -v

Cowlinator
quelle
0

Ich hatte ein ähnliches Problem nach dem Update von GitExtensions auf Version 3.3.0.7719

Irgendwie wurden meine Authentifizierungseinstellungen zurückgesetzt, um PuTTY anstelle von OpenSSH zu verwenden.

In dieser Version ist hier das Menü, mit dem ich OpenSSH wieder aktiviert habe:

Geben Sie hier die Bildbeschreibung ein

abwischen
quelle