L'erreur suivante apparaît lorsque j'essaie de cloner le référentiel Git. J'ai les clés publiques RSA configurées correctement aussi.
$ 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
Il pourrait être utilisé pour un GnuTLs ou pycurl bug
Voici la nouvelle méthode pour 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
J'ai eu ce problème et il m'a fallu un certain temps pour trouver la solution. Je pensais qu'il me manquait un colis quelque part. Je ne voulais pas recompiler Git, étant donné que j'utilisais déjà la dernière version et que j'étais à peu près sûr que le problème n'était pas Git lui-même.
Mon problème était mon fichier .gitconfig
. Le problème ne s'est produit que sur un ancien serveur Linux mis à niveau à plusieurs reprises au fil des années. À un moment donné, pour une raison quelconque, je ne me souviens pas, j'avais explicitement spécifié sslVersion = sslv3
dans mon fichier .gitconfig
.
Quand j'ai vu cela, l'ampoule s'est allumée, car je sais que SSL V3 est obsolète pour des raisons de sécurité et que la plupart des gens devraient plutôt utiliser TLS. Par exemple, voir RFC 7568, https://tools.ietf.org/html/rfc7568
Donc, mon correctif impliquait soit de supprimer la ligne sslVersion = sslv3
incriminée de mon fichier ~/.gitconfig
, soit de changer ceci:
[httpd]
sslVersion = sslv3
pour ça:
[httpd]
sslVersion = tlsv1.2
Supprimer la ligne et laisser Git/libcurl négocier le chiffrement semblait être le meilleur choix, car TLS v1.3 est en préparation et je ne veux plus rencontrer ce problème à l'avenir!
Dans mon cas, il semble que je n'utilisais pas de pycurl, la solution ci-dessus ne fonctionnait donc pas pour moi. Le travail de DID était une reconstruction de git-core modifiée pour utiliser openssl au lieu de gnutls.
Les instructions sont ici:
https://askubuntu.com/questions/186847/error-gnutls-handshake-falied
J'avais substitué "git-core" à "git" dans la plupart des endroits, le fichier .dsc (fichier d'informations sur le paquet?) Apparaissant sous le nom git-core_1.7.0.4-1ubuntu0.2.dsc, et le paquet .deb étant sorti git-core_1.7.0.4-1ubuntu0.2_i386.deb.
Pour moi, le certificat SSL a été auto-signé. Essayez ceci
git config --global http.sslVerify false
J'ai eu le même problème lorsque j'ai essayé Sudo git fetch
à partir d'un répertoire pour lequel mon propre utilisateur n'avait pas assez de droits. J'ai déplacé le référentiel vers /tmp
et poursuivi mon travail.
N'oubliez pas que /tmp
est effacé après le redémarrage.
Dans mon cas a fonctionné, en mélangeant les solutions de @Rick et @ m0j0
Commencez par exécuter ces commandes:
git config --global http.sslVerify false
git config --global http.sslVerify true
Après avoir ajouté ou modifié ~/.gitconfig
nano ~/.gitconfig
Définissez ceci:
[httpd]
sslVersion = sslv3