webentwicklung-frage-antwort-db.com.de

fehler: gnutls_handshake () fehlgeschlagenes GIT-Repository

Der folgende Fehler wird angezeigt, wenn ich versuche, Git-Repository zu klonen. Ich habe die öffentlichen RSA-Schlüssel auch richtig konfiguriert.

$ git clone https://github.com/blah/blah.git
Initialized empty Git repository in /home/arun/.git/
error: gnutls_handshake() failed: A TLS packet with unexpected length was
       received. while accessing https://github.com/blah/blah.git/info/refs

fatal: HTTP request failed
17
Arun Jayapal

Es könnte zu einem GnuTLs oder Pycurl-Bug verwendet werden

Das Folgende ist die neue Methode für pycurl_7.19.0-4ubuntu3:

Sudo apt-get install build-essential fakeroot dpkg-dev
mkdir ~/python-pycurl-openssl
cd ~/python-pycurl-openssl
Sudo apt-get source python-pycurl
Sudo apt-get build-dep python-pycurl
Sudo apt-get install libcurl4-openssl-dev
Sudo dpkg-source -x pycurl_7.19.0-4ubuntu3.dsc
cd pycurl-7.19.0
# remove the HAVE_CURL_GNUTLS=1 in the following file
Sudo vim debian/patches/10_setup.py.dpatch
# remove the HAVE_CURL_GNUTLS=1 in the following file
Sudo vim setup.py
# replace all gnutls into openssl in the following file
Sudo vim debian/control
Sudo dpkg-buildpackage -rfakeroot -b
Sudo dpkg -i ../python-pycurl_7.19.0-4ubuntu3_AMD64.deb
9
VonC

Ich hatte dieses Problem und es dauerte eine Weile, bis ich die Lösung fand. Ich dachte immer, dass mir irgendwo ein Paket fehlte. Ich wollte Git nicht neu kompilieren, da ich bereits die neueste Version verwendete, und ich war mir ziemlich sicher, dass das Problem nicht Git war. 

Mein Problem war meine .gitconfig-Datei. Das Problem trat nur bei einem alten Linux-Server auf, der im Laufe der Jahre viele Male aktualisiert wurde. Aus irgendeinem Grund, an den ich mich nicht erinnere, hatte ich sslVersion = sslv3 in meiner .gitconfig-Datei explizit angegeben. 

Als ich das sah, ging die Glühbirne weiter, da ich weiß, dass SSL V3 aufgrund von Sicherheitsbedenken verworfen wurde und dass die meisten Leute stattdessen TLS verwenden sollten. Zum Beispiel siehe RFC 7568, https://tools.ietf.org/html/rfc7568 .

Mein Fix bestand daher darin, entweder die sslVersion = sslv3-Zeile aus meiner ~/.gitconfig-Datei zu löschen oder diese zu ändern:

[httpd] 
    sslVersion = sslv3

zu diesem:

[httpd]
    sslVersion = tlsv1.2

Das Entfernen der Zeile und das Aushandeln der Verschlüsselung durch Git/libcurl schien die beste Wahl zu sein, da TLS v1.3 in Arbeit ist. 

5
m0j0

In meinem Fall scheint es, dass ich kein pycurl verwendet habe, so dass die obige Lösung für mich nicht funktionierte. Was DID funktionierte, war ein Rebit von git-core, der modifiziert wurde, um openssl anstelle von gnutls zu verwenden.

Anweisungen sind hier: 

https://askubuntu.com/questions/186847/error-gnutls-handshake-falied

Ich hatte an den meisten Stellen "git-core" für "git", die .dsc (Paketinformationsdatei?) Wurde als git-core_1.7.0.4-1ubuntu0.2.dsc angezeigt, und das .deb-Paket kam als heraus git-core_1.7.0.4-1ubuntu0.2_i386.deb.

4
2NinerRomeo

Für mich endete das SSL-Zertifikat selbstsigniert. Probieren Sie es aus

git config --global http.sslVerify false

1
Rick

Ich hatte das gleiche Problem, als ich Sudo git fetch aus einem Verzeichnis ausprobierte, für das mein eigener Benutzer nicht genügend Rechte hatte. Ich habe das Repository nach /tmp verschoben und meine Arbeit fortgesetzt.

Vergessen Sie nicht, dass /tmp nach dem Neustart gelöscht wird.

1
simno

In meinem Fall funktionierte das Mischen der Lösungen von @ Rick und @ m0j0

Führen Sie zuerst diese Befehle aus:

git config --global http.sslVerify false
git config --global http.sslVerify true

Nach dem Hinzufügen oder Ändern von ~/.gitconfig

nano ~/.gitconfig

Setze das:

[httpd] 
    sslVersion = sslv3
0
onalbi