ไม่สามารถโคลน repo github บน Linux ผ่าน HTTPS


87

ฉันพยายามทำง่ายๆgit clone https://github.com/org/project.gitในกล่อง CentOS แต่ได้รับ:

ข้อผิดพลาด: URL ที่ร้องขอส่งคืนข้อผิดพลาด: 401 ขณะเข้าถึง https://github.com/org/project.git/info/refs

ร้ายแรง: คำขอ HTTP ล้มเหลว

มันไม่เคยแจ้งให้ฉันป้อนชื่อผู้ใช้ / รหัสผ่าน แต่ล้มเหลว

ฉันสามารถโทรแบบเดิมบน Mac ได้ไม่มีปัญหา - ฉันขาดอะไรไป


กล่อง CentOS 6.3 ที่เปิดกว้างใหม่บนคลาวด์ - การเข้าถึงอินเทอร์เน็ตไม่ใช่ปัญหา
Yarin

@ Yarin: ฉันเชื่อว่าคุณอ่านสิ่งนี้แล้ว: help.github.com/articles/https-cloning-errorsทางเลือกสุดท้ายคือการใช้ ssh ฉันคิดว่า นอกจากนี้คุณอาจต้องการตรวจสอบอีเมลที่กำหนดค่าคอมไพล์ของคุณด้วย ... ไม่แน่ใจว่าช่วยได้หรือไม่ แต่ตรวจสอบให้แน่ใจว่าตรงกับที่คุณใช้กับบัญชี github ของคุณ
greg0ire

yeah- ไม่มีผู้ตรวจสอบนอกแท้จริงคัดลอกคำสั่งการทำงานจากสถานี Mac ของฉันเข้าไปในลินุกซ์ terminal- ไม่มีรหัสผ่านพรอมต์เพียง craps ออก
Yarin

คำตอบ:


210

คำตอบนั้นง่าย แต่ไม่ชัดเจน:

แทน:

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

ทำ:

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

หรือ (ไม่ปลอดภัย)

git clone https://username:password@github.com/org/project.git

(โปรดทราบว่าในกรณีต่อมาผู้ใช้รายอื่นในเครื่องของคุณอาจมองเห็นรหัสผ่านของคุณได้โดยการเรียกใช้ps u -u $youและจะปรากฏข้อความเคลียร์ในประวัติของเชลล์ตามค่าเริ่มต้น)

ทั้ง 3 วิธีทำงานบน Mac ของฉัน แต่มีเพียง 2 วิธีสุดท้ายเท่านั้นที่ทำงานบนกล่อง Linux ระยะไกล (เมื่อคิดย้อนกลับไปอาจเป็นเพราะฉันตั้งชื่อผู้ใช้ git ทั่วโลกบน Mac ของฉันในขณะที่ฉันไม่ได้ทำในกล่องระยะไกลนั่นอาจเป็นเช่นนั้น แต่การขาดการแจ้งชื่อผู้ใช้ทำให้ฉันสะดุด .. .)

ยังไม่เคยเห็นเอกสารนี้ที่ไหนมาดูเลย


3
ขอบคุณที่พูดถึงgit config --global user.nameรายละเอียดนั่นคือสำหรับฉัน!
GermanK

โปรดทราบว่าเมื่อใช้คอมไพล์ 1.7.10 คุณจะได้รับแจ้งให้ป้อนชื่อผู้ใช้ตาม @JERCดังนั้นสิ่งนี้ไม่ควรเป็นปัญหาอีกต่อไป ..
Yarin

ฉันมีปัญหาเดียวกัน (กับ GIT 1.7.1, CentOS5) แต่ฉันไม่สามารถเพิ่มชื่อผู้ใช้ / pwd ลงใน URL ได้เนื่องจากฉันต้องติดตั้งบันเดิลจากที่เก็บ Bitbucket ส่วนตัว (และเห็นได้ชัดว่าฉันจะไม่เพิ่มชื่อผู้ใช้และ pw ข้อมูลลงใน composer.json / composer.lock) Becouse GIT ไม่อนุญาตให้ฉันพิมพ์ด้วยตนเองฉันต้องไปอย่างยากลำบากและอัปเดต GIT ด้วยความช่วยเหลือของ RPM Forge Repository ( guru4hp.blogspot.hu/2012/08/… ) ฉันทำตามคำแนะนำของ @muness พบที่นี่: serverfault.com/questions/448814/…
hattila

2
นี่คือคำตอบหากคุณใช้ git 1.7.1 บน linux
Louie Miranda

1
ใช้ได้ถ้าใช้อะไรก่อน 1.7.10
Amit G

32

คุณสามารถปิดการใช้งาน ssl verfiy ด้วยตนเองแล้วลองอีกครั้ง :)

git config --global http.sslverify false

3
สำหรับ BeagleBone Black พร้อม Angstrom นั้น opkg ไม่ได้จัดหาเวอร์ชันที่จำเป็นในการตรวจสอบ ssl ดังนั้นนี่จึงเป็นทางเลือกเดียวที่ฉันพบว่าใช้งานได้
Josiah

1
คำสั่ง @flickerfly ถูกต้อง. ไม่มีวิธีอื่นในการโคลนโดยใช้ https ยกเว้นการใช้วิธีนี้เมื่อใช้ beaglebone black กับ Angstrom OS
Funky81

1
ทำงานบน Centos ขอขอบคุณ.
030

การปิดใช้งานการตรวจสอบ ssl นั้นค่อนข้างอันตราย ผู้ประสงค์ร้ายสามารถส่ง git repo ที่แก้ไขให้คุณได้ในทางทฤษฎี
Mark Doliner

ต้องทำเช่นนี้เมื่อใช้ GitLab
Gerard

12

ตรวจสอบให้แน่ใจว่าคุณมีคอมไพล์ 1.7.10 ขึ้นไปตอนนี้จะแจ้งให้ผู้ใช้ / รหัสผ่านถูกต้อง (คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดได้ที่นี่ )


4
ฉันมีปัญหาเดียวกันเวอร์ชัน git ของฉันคือ 1.7.1 เมื่อฉันอัปเกรดเป็น 1.7.10 ตอนนี้มันแจ้งผู้ใช้ / รหัสผ่านอย่างถูกต้อง !! (เวอร์ชัน 1.7.1 ไม่ใช่เวอร์ชัน 1.7.10) โปรดตรวจสอบเวอร์ชันก่อน เพื่ออุทิศ
JERC

10

ฉันต้องระบุชื่อผู้ใช้เพื่อทำงานกับเวอร์ชัน 1.7.1 git:

git remote set-url origin https://username@github.com/org/project.git

10

ฉันพบปัญหาเดียวกันข้อความแสดงข้อผิดพลาดและข้อมูลระบบปฏิบัติการมีดังนี้

ข้อมูลระบบปฏิบัติการ:

CentOS รุ่น 6.5 (รอบชิงชนะเลิศ)

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

ข้อมูลข้อผิดพลาด:

เริ่มต้นที่เก็บ Git ว่างใน /home/techops/pyenv/.git/ รหัสผ่าน: ข้อผิดพลาด: ขณะเข้าถึงhttps: //waterdrops@github.com/pyenv/pyenv.git/info/refs

ร้ายแรง: คำขอ HTTP ล้มเหลว

ข้อมูลเวอร์ชัน git & curl

ข้อมูล git: git เวอร์ชัน 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 โปรโตคอล: tftp ftp telnet dict ldap ldaps ไฟล์ http https ftps scp sftp คุณสมบัติ: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

การแก้จุดบกพร่อง

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

  • กำลังจะเชื่อมต่อ () ไปยัง github.com พอร์ต 443 (# 0)
  • กำลังลอง 13.229.188.59 ... เชื่อมต่อแล้ว
  • เชื่อมต่อกับ github.com (13.229.188.59) พอร์ต 443 (# 0)
  • การเริ่มต้น NSS ด้วย certpath: sql: / etc / pki / nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: ไม่มี
  • ข้อผิดพลาด NSS -12190
  • เกิดข้อผิดพลาดใน TLS handshake พยายามใช้ 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 โฮสต์: github.com ยอมรับ: /

  • การเชื่อมต่อเสียชีวิตกำลังลองการเชื่อมต่อใหม่

  • กำลังปิดการเชื่อมต่อ # 0
  • ส่งคำขออื่นไปยัง URL นี้: ' https://github.com '
  • กำลังจะเชื่อมต่อ () ไปยัง github.com พอร์ต 443 (# 0)
  • กำลังลอง 13.229.188.59 ... เชื่อมต่อแล้ว
  • เชื่อมต่อกับ github.com (13.229.188.59) พอร์ต 443 (# 0)
  • TLS ถูกปิดใช้งานเนื่องจากความล้มเหลวในการจับมือครั้งก่อน
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: ไม่มี
  • ข้อผิดพลาด NSS -12286
  • กำลังปิดการเชื่อมต่อ # 0
  • ข้อผิดพลาดในการเชื่อมต่อ SSL curl: (35) ข้อผิดพลาดในการเชื่อมต่อ SSL

หลังจากอัปเกรด curl, libcurl และ nss แล้ว git clone ก็ทำงานได้ดีอีกครั้งดังนั้นจึงเป็นเช่นนั้น คำสั่งอัพเดตมีดังนี้

sudo yum update -y nss curl libcurl


ขอบคุณ - สิ่งนี้ทำงานได้ดีที่สุดสำหรับฉันกับ bitbucket บน repo บนเซิร์ฟเวอร์ CentOS 6.6 เก่าของไคลเอนต์ที่ใช้ git 1.7.1
Eric Kigathi

ฉันมีปัญหากับ gitlab-ci runner ทำงานได้ดีหลังจากการอัปเกรด
isca

6

ดังที่ JERC กล่าวตรวจสอบให้แน่ใจว่าคุณมี git เวอร์ชันอัปเดต หากคุณใช้เฉพาะการตั้งค่าเริ่มต้นเมื่อคุณพยายามติดตั้ง git คุณจะได้รับเวอร์ชัน 1.7.1 นอกเหนือจากการดาวน์โหลดและติดตั้ง get เวอร์ชันล่าสุดด้วยตนเองแล้วคุณยังสามารถทำได้โดยการเพิ่มที่เก็บใหม่ให้กับ yum

จากtecadmin.net :

ดาวน์โหลดและติดตั้งที่เก็บ 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

จากนั้นคุณต้องเปิดใช้งาน rpmforge-extras แก้ไข/etc/yum.repos.d/rpmforge.repoและการเปลี่ยนแปลงenabled = 0ที่จะอยู่ภายใต้enabled = 1 [rpmforge-extras]ไฟล์มีลักษณะดังนี้:

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

เมื่อคุณทำเสร็จแล้วคุณสามารถอัปเดตคอมไพล์ด้วยไฟล์

yum update git

ผมไม่แน่ใจว่าทำไม แต่พวกเขาก็แนะนำให้ปิดการใช้งาน RPMForge-พิเศษ (เปลี่ยนกลับไปenabled = 0) yum clean allแล้วทำงาน

เป็นไปได้มากว่าคุณจะต้องใช้sudoสำหรับคำสั่งเหล่านี้


ตอบโจทย์มากจริงๆ! แก้ไขปัญหาของฉันใน Redhat (RHEL) 6.3
สูงสุด

แทนที่จะแก้ไขไฟล์ repo ด้วยตนเองสองครั้ง (เปิดใช้งานพิเศษก่อนแล้วปิดการใช้งานอีกครั้ง) ฉันแค่วิ่งyum install --enablerepo=rpmforge-extras gitและมันก็เสร็จแล้ว!
อัลลีน 1

6

ฉันสามารถทำให้ git 1.7.1 ทำงานได้หลังจากผ่านไประยะหนึ่ง

ก่อนอื่นฉันต้องปิดการใช้งาน SSL เพื่อที่ฉันจะได้ดึง:

git config --global http.sslverify false

จากนั้นฉันก็สามารถโคลนได้

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

จากนั้นหลังจากเพิ่มและยอมรับฉันไม่สามารถผลักดันกลับได้ ฉันก็เลย

git remote -v

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

เพื่อดูที่อยู่ดึงและดัน:

ต้องแก้ไขด้วย USERNAME @

git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

มันจะยังคงแจ้งให้คุณใส่รหัสผ่านซึ่งคุณสามารถเพิ่มได้

USERNAME:PASSWORD@github.....

แต่อย่าทำเช่นนั้นในขณะที่คุณบันทึกรหัสผ่านในข้อความที่ชัดเจนเพื่อให้ง่ายต่อการโจรกรรม

ฉันต้องทำชุดค่าผสมนี้เนื่องจากฉันไม่สามารถทำให้ SSH ทำงานได้เนื่องจากข้อ จำกัด ของไฟร์วอลล์


4

นี่คือคำตอบที่พึงคำถามนี้ แต่ตรวจสอบสถานะของ GitHub อันนี้โดนใจ :)


ข้อความจากวันนี้: "เรายังคงดำเนินการเพื่อลดการโจมตี DDoS ครั้งใหญ่ขณะนี้ไซต์พร้อมให้บริการสำหรับผู้ใช้บางรายแล้ว แต่เราจะยังคงอยู่ในสถานะสีแดงจนกว่าเราจะมั่นใจว่าไซต์ยังคงอยู่" ใครแฮ็ก GitHub? จริงๆ?
BenDundee

เห็นได้ชัดว่าไม่ใช่ homakov เขามุ่งมั่นที่จะเป็นผู้เชี่ยวชาญแทนที่จะเป็น DDoS
nurettin

3

ฉันมีปัญหาและข้อผิดพลาดเดียวกัน ในกรณีของฉันมันคือ https_proxy ไม่ได้ตั้งค่า การตั้งค่าตัวแปรสภาพแวดล้อม https_proxy ช่วยแก้ไขปัญหา

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

ตัวอย่าง:

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

หวังว่านี่จะช่วยใครสักคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.