web-dev-qa-db-fra.com

Impossible de cloner un dépôt github sous Linux via HTTPS

J'essaie de faire un simple git clone https://github.com/org/project.git sur une boîte CentOS mais obtenez:

erreur: l'URL demandée a renvoyé l'erreur: 401 en accédant à https://github.com/org/project.git/info/refs

fatal: la requête HTTP a échoué

Il ne me demande jamais mon nom d'utilisateur/mot de passe, échoue simplement.

Je peux passer exactement le même appel sur mon Mac sans problème. Qu'est-ce qui me manque?

83
Yarin

La réponse était simple mais pas évidente:

Au lieu de:

git clone https://github.com/org/project.git

do:

git clone https://[email protected]/org/project.git

ou (non sécurisé)

git clone https://username:[email protected]/org/project.git

(Notez que dans le dernier cas, votre mot de passe sera peut-être visible par d'autres utilisateurs de votre ordinateur en exécutant ps u -u $you et apparaîtra en texte clair dans l'historique de votre shell par défaut)

Les 3 méthodes fonctionnent sur mon Mac, mais seules les 2 dernières fonctionnent sur la machine Linux distante. (En y repensant, c’est probablement parce que j’avais un nom d’utilisateur global git installé sur mon Mac, alors que je ne l’avais pas fait sur la machine distante? C’est peut-être le cas, un nom d'utilisateur m'a fait trébucher ...)

Je n'ai jamais vu cela documenté, alors le voici.

206
Yarin

Vous pouvez désactiver manuellement la vérification SSL, puis réessayer. :)

git config --global http.sslverify false
32
Chu-Siang Lai

Assurez-vous que vous avez Git 1.7.10 ou version ultérieure, il demande maintenant l’utilisateur/mot de passe correctement. (Vous pouvez télécharger la dernière version ici )

12
JERC

Je devais spécifier un nom d'utilisateur pour travailler sur la version 1.7.1 de Git:

git remote set-url Origin https://[email protected]/org/project.git
10
Andrius

J'ai rencontré le même problème, le message d'erreur et les informations du système d'exploitation sont les suivants

Informations sur le système d'exploitation:

CentOS version 6.5 (finale)

Linux 192-168-30-213 2.6.32-431.el6.x86_64 # 1 SMP ven. Nov. 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

info d'erreur:

Référentiel Git vide initialisé dans /home/techops/pyenv/.git/ Mot de passe: erreur: lors de l'accès https: //[email protected]/pyenv/pyenv.git/info/refs

fatal: la requête HTTP a échoué

informations sur la version de git & curl

informations sur git: version 1.7.1 de git

curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Protocoles: tftp ftp telnet dict ldap ldaps fichier http https ftps scp sftp Caractéristiques: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

débogage

$ curl --verbose https://github.com

  • A propos de la connexion () au port 443 de github.com (# 0)
  • Trying 13.229.188.59 ... connecté
  • Connecté au port 443 (# 0) de github.com (13.229.188.59)
  • Initialisation de NSS avec certpath: sql:/etc/pki/nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: aucun
  • Erreur NSS -12190
  • Erreur lors de l'établissement de la liaison TLS lors de l'essai de SSLv3 ... Agent utilisateur GET/HTTP/1.1: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 Hôte libssh2/1.4.2: github.com Accepter: /

  • La connexion est morte, réessayant une nouvelle connexion

  • Fermeture de la connexion # 0
  • Envoyez une autre demande à cette URL: ' https://github.com '
  • A propos de la connexion () au port 443 de github.com (# 0)
  • Trying 13.229.188.59 ... connecté
  • Connecté au port 443 (# 0) de github.com (13.229.188.59)
  • TLS désactivé en raison d'un précédent échec de négociation
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: aucun
  • Erreur NSS -12286
  • Fermeture de la connexion # 0
  • Erreur de connexion SSL: (35) erreur de connexion SSL

après la mise à jour de curl, libcurl et nss, le clone git fonctionne à nouveau correctement, alors le voici. la commande de mise à jour est la suivante

Sudo yum update -y nss curl libcurl

8
Warrren Liu

J'ai été capable de faire fonctionner un git 1.7.1 après un certain temps.

Tout d'abord, je devais désactiver SSL simplement pour pouvoir extraire:

git config --global http.sslverify false

Ensuite, je pourrais cloner

git clone https://github.com/USERNAME/PROJECTNAME.git

Puis, après avoir ajouté et validé, je ne pouvais pas repousser. Donc j'ai fait

git remote -v

Origin  https://github.com/USERNAME/PROJECTNAME.git (fetch)
Origin  https://github.com/USERNAME/PROJECTNAME.git (Push)

pour voir les adresses pull et push:

Ceux-ci doivent être modifiés avec USERNAME @

git remote set-url Origin https://[email protected]/USERNAME/PROJECTNAME.git

Il vous demandera toujours un mot de passe, que vous pourriez ajouter avec

USERNAME:PASSWORD@github.....

Mais ne le faites pas, car vous sauvegardez votre mot de passe en texte clair pour un vol facile.

Je devais faire cette combinaison car je ne pouvais pas faire fonctionner SSH à cause des limitations du pare-feu.

6
Heine Nørby

Comme JERC l'a dit, assurez-vous de disposer d'une version mise à jour de git. Si vous utilisez uniquement les paramètres par défaut, lorsque vous essayez d'installer git, vous obtenez la version 1.7.1. Outre le téléchargement et l'installation manuels de la dernière version de get, vous pouvez également y parvenir en ajoutant un nouveau référentiel à yum.

De tecadmin.net :

Téléchargez et installez le référentiel rpmforge:

# use this for 64-bit
rpm -i 'http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm'
# use this for 32-bit
rpm -i 'http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm'

# then run this in either case
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

Ensuite, vous devez activer les extras rpmforge. Modifier /etc/yum.repos.d/rpmforge.repo et changer enabled = 0 à enabled = 1 sous [rpmforge-extras]. Le fichier ressemble à ceci:

### Name: RPMforge RPM Repository for RHEL 6 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/extras
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0 ####### CHANGE THIS LINE TO "enabled = 1" #############
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-testing]
name = RHEL $releasever - RPMforge.net - testing
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/testing
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge-testing
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

Une fois cela fait, vous pouvez mettre à jour git avec

yum update git

Je ne sais pas pourquoi, mais ils suggèrent alors de désactiver rpmforge-extras (retournez à enabled = 0) puis en cours d'exécution yum clean all.

Très probablement, vous devrez utiliser Sudo pour ces commandes.

6
Rob Watts

C'est la réponse la plus stupide à cette question, mais vérifiez le statut de GitHub . Celui-ci m'a eu :)

4
BenDundee

J'ai eu le même problème et erreur. Dans mon cas, le https_proxy n'était pas défini. La définition de la variable d’environnement https_proxy a résolu le problème.

$ export https_proxy=https://<porxy_addres>:<proxy_port>

Exemple:

$ export https_proxy=https://my.proxy.company.com:8000

J'espère que cela aidera quelqu'un.

2