Ein Github-Repo kann unter Linux nicht über HTTPS geklont werden

86

Ich versuche eine einfache git clone https://github.com/org/project.gitCentOS-Box zu machen, bekomme aber:

Fehler: Die angeforderte URL hat beim Zugriff auf https://github.com/org/project.git/info/refs den Fehler 401 zurückgegeben

Schwerwiegend: HTTP-Anforderung fehlgeschlagen

Es fordert mich nie zur Eingabe meines Benutzernamens / Passworts auf, schlägt einfach fehl.

Ich kann genau den gleichen Anruf auf meinem Mac problemlos tätigen - was fehlt mir?

Yarin
quelle
Es ist eine frische, weit geöffnete CentOS 6.3-Box in der Cloud - Internetzugang kein Problem
Yarin
@Yarin: Ich vertraue darauf, dass Sie dies bereits gelesen haben: help.github.com/articles/https-cloning-errors Der letzte Ausweg wäre die Verwendung von ssh, denke ich. Vielleicht möchten Sie auch die E-Mail-Adresse überprüfen, mit der Ihr Git konfiguriert ist. Sie sind sich nicht sicher, ob dies hilfreich ist, stellen jedoch sicher, dass sie der E-Mail entspricht, die Sie mit Ihrem Github-Konto verwenden.
Greg0ire
Ja, keiner von denen checkt aus - kopiert buchstäblich einen funktionierenden Befehl von meinem Mac-Terminal in das Linux-Terminal - keine Passwortabfrage, nur Scheiße
Yarin

Antworten:

210

Die Antwort war einfach, aber nicht offensichtlich:

Anstatt:

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

machen:

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

oder (unsicher)

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

(Beachten Sie, dass in einem späteren Fall Ihr Kennwort möglicherweise von anderen Benutzern auf Ihrem Computer angezeigt wird, wenn es ausgeführt wird, ps u -u $youund standardmäßig Klartext im Verlauf Ihrer Shell angezeigt wird.)

Alle drei Möglichkeiten funktionieren auf meinem Mac, aber nur die letzten beiden funktionieren auf der Remote-Linux-Box. (Wenn ich zurückdenke , liegt das wahrscheinlich daran, dass ich auf meinem Mac einen globalen Git-Benutzernamen eingerichtet hatte, während dies auf der Remote-Box nicht der Fall war. Das mag der Fall gewesen sein, aber das Fehlen einer Eingabeaufforderung für einen Benutzernamen hat mich gestolpert. .)

Ich habe das nirgendwo dokumentiert gesehen, also hier ist es.

Yarin
quelle
3
Vielen Dank für die Erwähnung des git config --global user.nameDetails, das war es für mich!
GermanK
Beachten Sie, dass wie von git 1.7.10 Sie werden nach einem Benutzernamen gefragt, nach @JERC , so dass diese nicht mehr sollte ein Thema sein ..
Yarin
Ich hatte das gleiche Problem (mit GIT 1.7.1, CentOS5), aber ich konnte den Benutzernamen / pwd nicht in die URLs einfügen, da ich Bundles von privaten Bitbucket-Repos installieren musste (und natürlich werde ich den Benutzernamen und nicht hinzufügen pw info in einen composer.json / composer.lock). Da GIT es mir nicht erlaubte, sie manuell einzugeben, musste ich den harten Weg gehen und GIT mithilfe des RPM Forge Repository ( guru4hp.blogspot.hu/2012/08/… ) aktualisieren . Ich folgte @muness 'Anleitung hier: serverfault.com/questions/448814/…
hattila
2
Dies ist die Antwort, wenn Sie Git 1.7.1 unter Linux verwenden
Louie Miranda
1
anwendbar, wenn etwas vor dem 1.7.10 verwendet wird
Amit G
32

Sie können ssl verfiy manuell deaktivieren und es erneut versuchen. :) :)

git config --global http.sslverify false
Chu-Siang Lai
quelle
3
Für das BeagleBone Black mit Angstrom liefert opkg nicht die erforderliche Version für die SSL-Überprüfung, daher ist dies die einzige Option, die ich gefunden habe, um zu funktionieren.
Josiah
1
Die @ flickerfly-Anweisung ist gültig. Es gibt keine andere Möglichkeit, mit https zu klonen, außer mit dieser Methode, wenn Beaglebone Black mit Angstrom OS verwendet wird.
Funky81
1
Arbeitet auf Centos. Danke dir.
030
Das Deaktivieren der SSL-Überprüfung ist etwas gefährlich. Ein böswilliger Mann in der Mitte könnte Ihnen theoretisch ein modifiziertes Git-Repo schicken.
Mark Doliner
Musste dies auch tun, wenn GitLab
Gerard
12

Stellen Sie sicher, dass Sie Git 1.7.10 oder höher haben. Jetzt werden Sie zur korrekten Eingabe von Benutzer / Passwort aufgefordert. (Sie können die neueste Version hier herunterladen )

JERC
quelle
4
Ich hatte das gleiche Problem, meine Git-Version war 1.7.1, als ich jetzt auf 1.7.10 aktualisiere. Es fordert Benutzer / Passwort korrekt auf !! (die Version 1.7.1 ist nicht die gleiche wie 1.7.10). Bitte überprüfen Sie die Versionen zuvor gewidmet.
JERC
10

Ich musste den Benutzernamen angeben, um an der Git-Version 1.7.1 arbeiten zu können:

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

Ich habe das gleiche Problem festgestellt. Die Fehlermeldung und die Betriebssysteminformationen lauten wie folgt

Betriebssysteminfo:

CentOS Release 6.5 (Final)

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

Fehlerinfo:

Initialisiertes leeres Git-Repository in /home/techops/pyenv/.git/ Passwort: Fehler: beim Zugriff auf https: //[email protected]/pyenv/pyenv.git/info/refs

Schwerwiegend: HTTP-Anforderung fehlgeschlagen

Git & Curl Versionsinfo

Git-Info: Git-Version 1.7.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 libssh2 / 1.4.2 Protokolle: tftp ftp telnet dikt ldap ldaps http-Datei https ftps scp sftp Eigenschaften: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

Debuggen

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

  • Verbindung () zum github.com-Port 443 (# 0)
  • Versuch 13.229.188.59 ... verbunden
  • Verbunden mit github.com (13.229.188.59) Port 443 (# 0)
  • Initialisieren von NSS mit certpath: sql: / etc / pki / nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: keine
  • NSS-Fehler -12190
  • Fehler beim TLS-Handshake beim Versuch von SSLv3 ... GET / HTTP / 1.1 User-Agent: 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 Host: github.com Akzeptieren: /

  • Die Verbindung wurde unterbrochen und es wurde erneut versucht, eine neue Verbindung herzustellen

  • Verbindung # 0 schließen
  • Stellen Sie eine weitere Anfrage an diese URL: ' https://github.com '
  • Verbindung () zum github.com-Port 443 (# 0)
  • Versuch 13.229.188.59 ... verbunden
  • Verbunden mit github.com (13.229.188.59) Port 443 (# 0)
  • TLS aufgrund eines früheren Handshake-Fehlers deaktiviert
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: keine
  • NSS-Fehler -12286
  • Verbindung # 0 schließen
  • Curl des SSL-Verbindungsfehlers: (35) SSL-Verbindungsfehler

Nach dem Upgrade von Curl, Libcurl und NSS funktioniert der Git-Klon wieder einwandfrei. Der Update-Befehl lautet wie folgt

sudo yum update -y nss curl libcurl

Warrren Liu
quelle
Danke - das funktionierte am besten für mich mit Bitbucket auf einem Repo auf dem alten CentOS 6.6 Server eines Clients, auf dem Git 1.7.1 ausgeführt wird
Eric Kigathi
Ich habe dieses Problem mit Gitlab-Ci Runner. Funktioniert gut nach dem Upgrade.
Isca
6

Stellen Sie, wie JERC sagte, sicher, dass Sie eine aktualisierte Version von git haben. Wenn Sie nur die Standardeinstellungen verwenden und versuchen, git zu installieren, erhalten Sie Version 1.7.1. Neben dem manuellen Herunterladen und Installieren der neuesten Version von get können Sie dies auch erreichen, indem Sie yum ein neues Repository hinzufügen.

Von tecadmin.net :

Laden Sie das rpmforge-Repository herunter und installieren Sie es:

# 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

Dann müssen Sie die rpmforge-Extras aktivieren. Bearbeiten /etc/yum.repos.d/rpmforge.repound enabled = 0zu enabled = 1unter wechseln [rpmforge-extras]. Die Datei sieht folgendermaßen aus:

### 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

Sobald Sie dies getan haben, können Sie git mit aktualisieren

yum update git

Ich bin mir nicht sicher warum, aber sie schlagen dann vor, rpmforge-Extras zu deaktivieren (zurück zu enabled = 0) und dann auszuführen yum clean all.

Höchstwahrscheinlich müssen Sie sudofür diese Befehle verwenden.

Rob Watts
quelle
Wirklich tolle Antwort! Meine Probleme mit Redhat (RHEL) 6.3 wurden gelöst.
Max
Anstatt die Repo-Datei zweimal manuell zu bearbeiten (erst Extras aktivieren und dann wieder deaktivieren), bin ich einfach gelaufen yum install --enablerepo=rpmforge-extras gitund das war's!
Alleen1
6

Nach einiger Zeit konnte ich einen Git 1.7.1 zum Laufen bringen.

Zuerst musste ich SSL deaktivieren, damit ich Folgendes abrufen konnte:

git config --global http.sslverify false

Dann könnte ich klonen

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

Dann, nachdem ich hinzugefügt und festgeschrieben hatte, konnte ich nicht zurückschieben. So tat ich

git remote -v

origin  https://github.com/USERNAME/PROJECTNAME.git (fetch)
origin  https://github.com/USERNAME/PROJECTNAME.git (push)

um die Pull- und Push-Adressen zu sehen:

Diese müssen mit USERNAME @ geändert werden

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

Sie werden weiterhin zur Eingabe eines Kennworts aufgefordert, das Sie hinzufügen können

USERNAME:PASSWORD@github.....

Tun Sie dies jedoch nicht, da Sie Ihr Passwort für einen einfachen Diebstahl im Klartext speichern.

Ich musste diese Kombination durchführen, da ich SSH aufgrund von Firewall-Einschränkungen nicht zum Laufen bringen konnte.

Heine Nørby
quelle
4

Dies ist die dümmste Antwort auf diese Frage, aber überprüfen Sie den Status von GitHub . Dieser hat mich erwischt :)

BenDundee
quelle
Nachricht von heute: "Wir arbeiten immer noch daran, einen sehr großen DDoS-Angriff abzuwehren. Die Site ist jetzt für einige Benutzer verfügbar, aber wir bleiben im roten Status, bis wir sicher sind, dass die Site aktiv bleibt." Wer hackt GitHub? "Ja wirklich?"
BenDundee
offensichtlich nicht homakov, er verpflichtet sich, anstelle von DDoS zu meistern
nurettin
3

Ich hatte das gleiche Problem und den gleichen Fehler. In meinem Fall war der https_proxy nicht gesetzt. Durch Festlegen der Umgebungsvariablen https_proxy wurde das Problem behoben.

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

Beispiel:

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

Hoffe das hilft jemandem.

Senthil Kumar Sekar
quelle