Tidak dapat mengkloning repo github di Linux melalui HTTPS

87

Saya mencoba melakukan yang sederhana git clone https://github.com/org/project.gitpada kotak CentOS tetapi dapatkan:

kesalahan: URL yang diminta mengembalikan kesalahan: 401 saat mengakses https://github.com/org/project.git/info/refs

fatal: permintaan HTTP gagal

Itu tidak pernah meminta saya untuk nama pengguna / kata sandi saya, hanya gagal.

Saya dapat melakukan panggilan yang sama persis di Mac saya tidak masalah- apa yang saya lewatkan?

Yarin
sumber
Ini adalah kotak CentOS 6.3 terbuka lebar yang baru di cloud- akses internet tidak menjadi masalah
Yarin
@ Yarin: Saya yakin Anda sudah membaca ini: help.github.com/articles/https-cloning-errors Pilihan terakhir adalah menggunakan ssh. Juga, Anda mungkin ingin memeriksa email yang dikonfigurasi dengan git Anda ... tidak yakin apakah itu membantu tetapi pastikan itu sesuai dengan yang Anda gunakan dengan akun github Anda.
greg0ire
ya- tidak ada yang check out- benar-benar menyalin perintah yang berfungsi dari terminal mac saya ke terminal linux- tidak ada prompt kata sandi, cukup keluar
Yarin

Jawaban:

210

Jawabannya sederhana tapi tidak jelas:

Dari pada:

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

melakukan:

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

atau (tidak aman)

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

(Perhatikan bahwa dalam kasus nanti, kata sandi Anda akan dapat dilihat oleh pengguna lain di komputer Anda dengan menjalankan ps u -u $youdan akan muncul cleartext dalam riwayat shell Anda secara default)

Semua 3 cara berfungsi di Mac saya, tetapi hanya 2 cara terakhir yang berfungsi di kotak Linux jarak jauh. (Memikirkan kembali hal ini, mungkin karena saya memiliki nama pengguna git global yang disiapkan di Mac saya, sedangkan di kotak jarak jauh saya tidak melakukannya? Mungkin itu yang terjadi, tetapi kurangnya prompt untuk nama pengguna membuat saya tersandung .. .)

Belum pernah melihat ini didokumentasikan di mana pun, jadi ini dia.

Yarin
sumber
3
Terima kasih telah menyebutkan git config --global user.namedetailnya, itu untuk saya!
GermanK
Perhatikan bahwa mulai git 1.7.10 Anda akan dimintai nama pengguna, menurut @JERC , jadi ini seharusnya tidak lagi menjadi masalah ..
Yarin
Saya memiliki masalah yang sama (dengan GIT 1.7.1, CentOS5), tetapi saya tidak dapat menambahkan nama pengguna / sandi ke dalam URL karena saya harus menginstal bundel dari repo Bitbucket pribadi (dan jelas saya tidak akan menambahkan nama pengguna dan pw info ke dalam composer.json / composer.lock). Karena GIT tidak mengizinkan saya untuk mengetiknya secara manual, saya harus bekerja keras, dan memperbarui GIT dengan bantuan RPM Forge Repository ( guru4hp.blogspot.hu/2012/08/… ). Saya mengikuti panduan @muness yang ditemukan di sini: serverfault.com/questions/448814/…
hattila
2
Ini adalah jawabannya jika Anda menggunakan git 1.7.1 di linux
Louie Miranda
1
berlaku jika menggunakan apa pun sebelum 1.7.10
Amit G
32

Anda dapat menonaktifkan verifikasi ssl secara manual, dan mencoba lagi. :)

git config --global http.sslverify false
Chu-Siang Lai
sumber
3
Untuk BeagleBone Black dengan Angstrom, opkg tidak menyediakan versi yang diperlukan untuk melakukan verifikasi ssl jadi ini adalah satu-satunya pilihan yang saya temukan untuk berfungsi.
Yosia
1
Pernyataan @flickerfly valid..tidak ada cara lain untuk mengkloning menggunakan https kecuali menggunakan metode ini saat menggunakan beaglebone black dengan Angstrom OS.
Funky81
1
Bekerja di Centos. Terima kasih.
030
Menonaktifkan verifikasi ssl sedikit berbahaya. Man-in-the-middle yang jahat secara teoritis dapat mengirimi Anda repo git yang dimodifikasi.
Mark Doliner
Juga harus melakukan ini saat menggunakan GitLab
Gerard
12

Pastikan Anda memiliki git 1.7.10 atau yang lebih baru, sekarang meminta pengguna / kata sandi dengan benar. (Anda dapat mengunduh versi terbaru di sini )

JERC
sumber
4
Saya memiliki masalah yang sama, Versi git saya adalah 1.7.1 ketika saya meningkatkan ke 1.7.10 sekarang Ini meminta Pengguna / Kata Sandi dengan Benar !!, (versi 1.7.1 TIDAK SAMA DENGAN 1.7.10) Silakan periksa versi sebelumnya untuk berbakti.
JERC
10

Saya harus menentukan nama pengguna untuk mengerjakan versi 1.7.1 git:

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

Saya menemui masalah yang sama, pesan kesalahan dan info OS adalah sebagai berikut

Info OS:

Rilis CentOS 6.5 (Final)

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

info kesalahan:

Menginisialisasi repositori Git kosong di /home/techops/pyenv/.git/ Kata sandi: kesalahan: saat mengakses https: //[email protected]/pyenv/pyenv.git/info/refs

fatal: permintaan HTTP gagal

info versi git & curl

info git: git versi 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 Protokol: tftp ftp telnet dict ldap ldaps file http https ftps scp sftp Fitur: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

debugging

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

  • Akan menyambungkan () ke github.com port 443 (# 0)
  • Mencoba 13.229.188.59 ... terhubung
  • Terhubung ke github.com (13.229.188.59) port 443 (# 0)
  • Menginisialisasi NSS dengan certpath: sql: / etc / pki / nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: tidak ada
  • Kesalahan NSS -12190
  • Kesalahan dalam jabat tangan TLS, mencoba 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 Terima: /

  • Sambungan terputus, mencoba kembali sambungan baru

  • Menutup koneksi # 0
  • Keluarkan permintaan lain ke URL ini: ' https://github.com '
  • Akan menyambungkan () ke github.com port 443 (# 0)
  • Mencoba 13.229.188.59 ... terhubung
  • Terhubung ke github.com (13.229.188.59) port 443 (# 0)
  • TLS dinonaktifkan karena kegagalan jabat tangan sebelumnya
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: tidak ada
  • Kesalahan NSS -12286
  • Menutup koneksi # 0
  • Keriting kesalahan koneksi SSL: (35) Kesalahan koneksi SSL

setelah memutakhirkan curl, libcurl dan nss, git clone berfungsi dengan baik lagi, jadi ini dia. perintah pembaruan adalah sebagai berikut

sudo yum update -y nss curl libcurl

Warrren Liu
sumber
Terima kasih - ini bekerja paling baik untuk saya dengan bitbucket pada repo di Server CentOS 6.6 lama milik klien yang menjalankan git 1.7.1
Eric Kigathi
Saya mengalami masalah ini dengan pelari gitlab-ci. Bekerja dengan baik setelah peningkatan.
isca
6

Seperti yang dikatakan JERC, pastikan Anda memiliki versi git yang diperbarui. Jika Anda hanya menggunakan pengaturan default, ketika Anda mencoba menginstal git, Anda akan mendapatkan versi 1.7.1. Selain mengunduh dan menginstal versi terbaru dari get secara manual, Anda juga dapat melakukannya dengan menambahkan repositori baru ke yum.

Dari tecadmin.net :

Unduh dan instal repositori 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

Kemudian Anda perlu mengaktifkan rpmforge-extras. Edit /etc/yum.repos.d/rpmforge.repodan ubah enabled = 0ke enabled = 1bawah [rpmforge-extras]. File tersebut terlihat seperti ini:

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

Setelah Anda selesai melakukannya, Anda dapat memperbarui git dengan

yum update git

Saya tidak yakin mengapa, tetapi mereka kemudian menyarankan untuk menonaktifkan rpmforge-extras (ubah kembali ke enabled = 0) dan kemudian jalankan yum clean all.

Kemungkinan besar Anda harus menggunakan sudountuk perintah ini.

Rob Watts
sumber
Jawaban yang sangat bagus! Memecahkan masalah saya di Redhat (RHEL) 6.3.
Maksimal
Alih-alih mengedit file repo secara manual dua kali (pertama aktifkan ekstra dan kemudian nonaktifkan lagi), saya hanya menjalankan yum install --enablerepo=rpmforge-extras gitdan membuangnya!
alleen1
6

Saya bisa mendapatkan git 1.7.1 untuk bekerja setelah beberapa waktu.

Pertama, saya harus menonaktifkan SSL agar saya dapat menarik:

git config --global http.sslverify false

Lalu saya bisa mengkloning

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

Kemudian setelah menambahkan dan melakukan saya TIDAK DAPAT untuk mendorong kembali. Jadi saya lakukan

git remote -v

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

untuk melihat tarik dan dorong alamat:

Ini harus diubah dengan USERNAME @

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

Ini masih akan meminta Anda untuk kata sandi, yang dapat Anda tambahkan dengan

USERNAME:PASSWORD@github.....

Tapi jangan lakukan itu, karena Anda menyimpan kata sandi dalam teks bersih untuk memudahkan pencurian.

Saya harus melakukan kombinasi ini karena saya tidak dapat menggunakan SSH karena keterbatasan firewall.

Heine Nørby
sumber
4

Ini adalah jawaban terbodoh untuk pertanyaan ini, tetapi periksa status GitHub . Yang ini membuatku :)

BenDundee
sumber
Pesan dari hari ini: "Kami masih berupaya untuk mengurangi serangan DDoS yang sangat besar. Situs ini sekarang tersedia untuk beberapa pengguna tetapi kami akan tetap berstatus merah sampai kami yakin bahwa situs tersebut tidak berubah." Siapa yang meretas GitHub? Betulkah?
BenDundee
jelas bukan homakov, dia berkomitmen untuk menguasai alih-alih DDoS
nurettin
3

Saya memiliki masalah dan kesalahan yang sama. Dalam kasus saya, https_proxy tidak disetel. Menyetel variabel lingkungan https_proxy memperbaiki masalah tersebut.

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

Contoh:

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

Semoga ini membantu seseorang.

Senthil Kumar Sekar
sumber