Không thể sao chép repo github trên Linux qua HTTPS


87

Tôi đang cố gắng thực hiện một việc đơn giản git clone https://github.com/org/project.gittrên hộp CentOS nhưng nhận được:

lỗi: URL được yêu cầu trả về lỗi: 401 khi truy cập https://github.com/org/project.git/info/refs

nghiêm trọng: Yêu cầu HTTP không thành công

Nó không bao giờ nhắc tôi nhập tên người dùng / mật khẩu của tôi, chỉ là thất bại.

Tôi có thể thực hiện cùng một cuộc gọi trên máy Mac của mình mà không có vấn đề gì - tôi đang thiếu cái gì?


Một tươi rộng mở CentOS của nó 6.3 hộp trên internet cloud- không phải là một vấn đề
Yarin

@Yarin: Tôi tin rằng bạn đã đọc cái này rồi: help.github.com/articles/https-cloning-errors Phương pháp cuối cùng là sử dụng ssh. Ngoài ra, bạn có thể muốn kiểm tra email mà git của bạn được định cấu hình ... không chắc liệu nó có hữu ích hay không nhưng hãy đảm bảo rằng nó tương ứng với email bạn sử dụng với tài khoản github của mình.
greg0ire 21/09/12

yeah- không ai trong số những người kiểm tra dùng ngoài trời theo nghĩa đen sao chép một lệnh làm việc kể từ terminal mac của tôi vào linux terminal- không có mật khẩu nhanh chóng, chỉ craps ra
Yarin

Câu trả lời:


210

Câu trả lời rất đơn giản nhưng không rõ ràng:

Thay vì:

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

làm:

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

hoặc (không an toàn)

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

(Lưu ý rằng trong trường hợp sau này, mật khẩu của bạn có thể được hiển thị bởi những người dùng khác trên máy của bạn khi chạy ps u -u $youvà sẽ xuất hiện rõ ràng trong lịch sử trình bao của bạn theo mặc định)

Cả 3 cách đều hoạt động trên máy Mac của tôi, nhưng chỉ 2 cách cuối cùng hoạt động trên hộp Linux từ xa. (Nghĩ lại về điều này, có thể là do tôi đã thiết lập tên người dùng git toàn cầu trên máy Mac của mình, trong khi trên hộp điều khiển từ xa thì không? Điều đó có thể xảy ra, nhưng việc thiếu lời nhắc cho tên người dùng đã khiến tôi vấp phải .. .)

Tôi chưa thấy tài liệu này được ghi lại ở bất cứ đâu, vì vậy nó đây.


3
Cảm ơn bạn đã đề cập git config --global user.namechi tiết, đó là nó cho tôi!
Tiếng ĐứcK

Lưu ý rằng tính git 1.7.10 bạn sẽ được nhắc nhập tên người dùng, theo @JERC , vì vậy đây sẽ không còn là một vấn đề ..
Yarin

Tôi đã gặp vấn đề tương tự (với GIT 1.7.1, CentOS5), nhưng tôi không thể thêm tên người dùng / pwd vào URL vì tôi phải cài đặt các gói từ kho Bitbucket riêng tư (và rõ ràng là tôi sẽ không thêm tên người dùng và pw thông tin vào composer.json / composer.lock). Vì GIT không cho phép tôi nhập chúng theo cách thủ công, tôi đã phải thực hiện một cách khó khăn và cập nhật GIT với sự trợ giúp của Kho lưu trữ RPM Forge ( guru4hp.blogspot.hu/2012/08/… ). Tôi đi theo @muness' hướng dẫn tìm thấy ở đây: serverfault.com/questions/448814/...
hattila

2
Đây là câu trả lời nếu bạn đang sử dụng git 1.7.1 trên linux
Louie Miranda

1
áp dụng nếu sử dụng bất cứ điều gì trước khi 1.7.10
Amit G

32

Bạn có thể tắt thủ công ssl verfiy và thử lại. :)

git config --global http.sslverify false

3
Đối với BeagleBone Black với Angstrom, opkg không cung cấp phiên bản bắt buộc để thực hiện xác minh ssl, vì vậy đây là lựa chọn duy nhất mà tôi thấy có hiệu quả.
Josiah

1
Câu lệnh @flickerfly là hợp lệ..Không có cách nào khác để sao chép bằng https ngoại trừ sử dụng phương pháp này khi sử dụng beaglebone black với Angstrom OS.
Funky81

1
Hoạt động trên Centos. Cảm ơn bạn.
030

Việc tắt xác minh ssl hơi nguy hiểm. Về mặt lý thuyết, một kẻ trung gian độc hại có thể gửi cho bạn một repo git đã được sửa đổi.
Mark Doliner

Cũng phải làm điều này khi sử dụng GitLab
Gerard

12

Đảm bảo bạn có git 1.7.10 trở lên, giờ đây nó sẽ nhắc nhập chính xác người dùng / mật khẩu. (Bạn có thể tải phiên bản mới nhất tại đây )


4
Tôi đã gặp vấn đề tương tự, Phiên bản git của tôi là 1.7.1 khi tôi nâng cấp lên 1.7.10 ngay bây giờ Nó nhắc Người dùng / Mật khẩu đúng !!, (phiên bản 1.7.1 KHÔNG giống với 1.7.10) Vui lòng kiểm tra các phiên bản trước để cống hiến.
JERC

10

Tôi đã phải chỉ định tên người dùng để hoạt động trên phiên bản 1.7.1 git:

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

10

Tôi đã gặp vấn đề tương tự, thông báo lỗi và thông tin hệ điều hành như sau

Thông tin hệ điều hành:

CentOS phát hành 6.5 (Cuối cùng)

Linux 192-168-30-213 2.6.32-431.el6.x86_64 # 1 SMP Thứ Sáu ngày 22 tháng 11 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

thông tin lỗi:

Kho lưu trữ Git trống được khởi tạo trong /home/techops/pyenv/.git/ Mật khẩu: error: khi truy cập https: //waterdrops@github.com/pyenv/pyenv.git/info/refs

nghiêm trọng: Yêu cầu HTTP không thành công

thông tin phiên bản git & curl

thông tin git: git phiên bản 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 Giao thức: tftp ftp telnet dict ldap ldaps http tệp https ftps scp sftp Các tính năng: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

gỡ lỗi

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

  • Sắp kết nối () với github.com cổng 443 (# 0)
  • Đang thử 13.229.188.59 ... được kết nối
  • Đã kết nối với github.com (13.229.188.59) cổng 443 (# 0)
  • Khởi tạo NSS với certpath: sql: / etc / pki / nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: không có
  • Lỗi NSS -12190
  • Lỗi khi bắt tay TLS, đang thử SSLv3 ... GET / HTTP / 1.1 Tác nhân người dùng: 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 Máy chủ: github.com Chấp nhận: /

  • Kết nối bị chết, đang thử lại kết nối mới

  • Đang đóng kết nối # 0
  • Đưa ra một yêu cầu khác cho URL này: ' https://github.com '
  • Sắp kết nối () với github.com cổng 443 (# 0)
  • Đang thử 13.229.188.59 ... được kết nối
  • Đã kết nối với github.com (13.229.188.59) cổng 443 (# 0)
  • TLS bị vô hiệu hóa do lỗi bắt tay trước đó
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: không có
  • Lỗi NSS -12286
  • Đang đóng kết nối # 0
  • Lỗi kết nối SSL: (35) Lỗi kết nối SSL

sau khi nâng cấp curl, libcurl và nss, git clone hoạt động tốt trở lại, vì vậy nó đây. lệnh cập nhật như sau

sudo yum update -y nss curl libcurl


Cảm ơn - điều này làm việc tốt nhất cho tôi về với bitbucket trên repo trên CentOS cũ của khách hàng 6.6 Server chạy git 1.7.1
Eric Kigathi

Tôi đang gặp sự cố này với Á hậu gitlab-ci. Làm việc tốt sau khi nâng cấp.
isca

6

Như JERC đã nói, hãy đảm bảo rằng bạn có phiên bản git cập nhật. Nếu bạn chỉ sử dụng cài đặt mặc định, khi bạn cố gắng cài đặt git, bạn sẽ nhận được phiên bản 1.7.1. Ngoài việc tải xuống và cài đặt phiên bản get mới nhất theo cách thủ công, bạn cũng có thể thực hiện điều này bằng cách thêm một kho lưu trữ mới vào yum.

Từ tecadmin.net :

Tải xuống và cài đặt kho 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

Sau đó, bạn cần kích hoạt rpmforge-extras. Chỉnh sửa /etc/yum.repos.d/rpmforge.repovà thay đổi enabled = 0thành enabled = 1dưới [rpmforge-extras]. Tệp trông như thế này:

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

Sau khi hoàn thành việc này, bạn có thể cập nhật git với

yum update git

Tôi không chắc tại sao, nhưng sau đó họ đề xuất tắt rpmforge-extras (thay đổi trở lại enabled = 0) và sau đó chạy yum clean all.

Nhiều khả năng bạn sẽ cần sử dụng sudocác lệnh này.


Câu trả lời thực sự tuyệt vời! Đã giải quyết các vấn đề của tôi trên Redhat (RHEL) 6.3.
Tối đa

Thay vì chỉnh sửa thủ công tệp repo hai lần (lần đầu tiên bật tính năng bổ sung và sau đó tắt lại), tôi chỉ chạy yum install --enablerepo=rpmforge-extras gitvà chỉnh sửa nó!
alleen1

6

Tôi đã có thể có được git 1.7.1 để hoạt động sau một thời gian.

Đầu tiên, tôi phải tắt SSL để tôi có thể kéo:

git config --global http.sslverify false

Sau đó, tôi có thể sao chép

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

Sau đó, sau khi thêm và cam kết, tôi không thể đẩy lùi được. Tôi cũng vậy

git remote -v

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

để xem các địa chỉ kéo và đẩy:

Chúng phải được sửa đổi bằng USERNAME @

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

Nó vẫn sẽ nhắc bạn nhập mật khẩu mà bạn có thể thêm vào

USERNAME:PASSWORD@github.....

Nhưng đừng làm vậy, vì bạn lưu mật khẩu của mình dưới dạng văn bản rõ ràng để dễ bị đánh cắp.

Tôi đã phải thực hiện kết hợp này vì tôi không thể làm cho SSH hoạt động do các giới hạn của tường lửa.


4

Đây là câu trả lời ngớ ngẩn nhất cho câu hỏi này, nhưng hãy kiểm tra trạng thái của GitHub . Cái này có tôi :)


Thông báo từ hôm nay: "Chúng tôi vẫn đang làm việc để giảm thiểu một cuộc tấn công DDoS rất lớn. Trang web hiện có sẵn cho một số người dùng nhưng chúng tôi sẽ duy trì trạng thái màu đỏ cho đến khi chúng tôi tin rằng trang web vẫn hoạt động." Ai hack GitHub? Có thật không?
BenDundee

rõ ràng là không homakov, ông cam kết để làm chủ thay vì DDoS
Nurettin

3

Tôi đã có cùng một vấn đề và lỗi. Trong trường hợp của tôi, đó là https_proxy chưa được đặt. Đặt biến môi trường https_proxy đã khắc phục được sự cố.

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

Thí dụ:

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

Hy vọng điều này sẽ giúp ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.