Impossibile clonare un repository GitHub su Linux tramite HTTPS


87

Sto provando a fare un semplice git clone https://github.com/org/project.gitsu una scatola CentOS ma ottengo:

errore: l'URL richiesto ha restituito l'errore: 401 durante l'accesso a https://github.com/org/project.git/info/refs

irreversibile: richiesta HTTP non riuscita

Non mi richiede mai il mio nome utente / password, semplicemente fallisce.

Posso fare la stessa identica chiamata sul mio Mac senza problemi, cosa mi manca?


È un nuovo box CentOS 6.3 aperto sul cloud: l'accesso a Internet non è un problema
Yarin

@Yarin: spero che tu abbia già letto questo: help.github.com/articles/https-cloning-errors L'ultima risorsa sarebbe usare ssh, credo. Inoltre, potresti voler controllare l'email con cui è configurato il tuo git ... non sono sicuro se aiuta, ma assicurati che corrisponda a quello che usi con il tuo account github.
greg0ire

sì, nessuno di questi controlla, letteralmente copiando un comando funzionante dal mio terminale mac nel terminale linux, nessuna richiesta di password, solo craps
Yarin

Risposte:


210

La risposta era semplice ma non ovvia:

Invece di:

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

fare:

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

o (insicuro)

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

(Nota che nel caso successivo, la tua password potrebbe essere visibile da altri utenti sulla tua macchina in esecuzione ps u -u $youe apparirà in chiaro nella cronologia della shell per impostazione predefinita)

Tutti e 3 i modi funzionano sul mio Mac, ma solo gli ultimi 2 hanno funzionato sulla macchina Linux remota. (Ripensandoci, probabilmente è perché avevo un nome utente git globale impostato sul mio Mac, mentre sulla scatola remota no? Potrebbe essere stato il caso, ma la mancanza di prompt per un nome utente mi ha fatto scattare .. .)

Non l'ho visto documentato da nessuna parte, quindi eccolo qui.


3
Grazie per aver menzionato il git config --global user.namedettaglio, è stato tutto per me!
Tedesco K

Nota che a partire da git 1.7.10 ti verrà richiesto un nome utente, secondo @JERC , quindi questo non dovrebbe più essere un problema ..
Yarin

Ho avuto lo stesso problema (con GIT 1.7.1, CentOS5), ma non sono riuscito ad aggiungere il nome utente / pwd negli URL perché ho dovuto installare bundle da repository Bitbucket privati ​​(e ovviamente non aggiungerò nome utente e pw info in un composer.json / composer.lock). Dato che GIT non mi ha permesso di digitarli manualmente, ho dovuto andare nel modo più duro e aggiornato GIT con l'aiuto di RPM Forge Repository ( guru4hp.blogspot.hu/2012/08/… ). Ho seguito la guida di @muness che si trova qui: serverfault.com/questions/448814/…
hattila

2
Questa è la risposta se stai usando git 1.7.1 su linux
Louie Miranda

1
applicabile se si utilizza qualcosa prima dell'1.7.10
Amit G

32

Puoi disabilitare manualmente la verifica ssl e riprovare. :)

git config --global http.sslverify false

3
Per BeagleBone Black con Angstrom, opkg non fornisce la versione richiesta per eseguire la verifica ssl, quindi questa è l'unica scelta che ho trovato funzionante.
Josiah

1
L'istruzione @flickerfly è valida .. nessun altro modo per clonare usando https eccetto usando questo metodo quando si usa beaglebone black con Angstrom OS.
Funky81

1
Funziona su Centos. Grazie.
030

Disabilitare la verifica SSL è un po 'pericoloso. Un malintenzionato man-in-the-middle potrebbe teoricamente inviarti un repository git modificato.
Mark Doliner,

Doveva farlo anche quando si utilizzava GitLab
Gerard

12

Assicurati di avere git 1.7.10 o successivo, ora richiede correttamente utente / password. (Puoi scaricare l'ultima versione qui )


4
Ho avuto lo stesso problema, la mia versione di git era 1.7.1 quando aggiorno alla 1.7.10 ora Richiede utente / password correttamente !!, (la versione 1.7.1 NON È LA STESSA DELLA 1.7.10) Si prega di controllare le versioni prima a devoto.
JERC

10

Ho dovuto specificare il nome utente per lavorare sulla versione 1.7.1 di git:

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

10

Ho incontrato lo stesso problema, il messaggio di errore e le informazioni sul sistema operativo sono i seguenti

Informazioni sul sistema operativo:

CentOS versione 6.5 (finale)

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

informazioni sull'errore:

Repository Git vuoto inizializzato in /home/techops/pyenv/.git/ Password: errore: durante l'accesso a https: //waterdrops@github.com/pyenv/pyenv.git/info/refs

irreversibile: richiesta HTTP non riuscita

Informazioni sulla versione di git & curl

git info: git versione 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 Protocolli: tftp ftp telnet dict ldap ldaps file http https ftps scp sftp Caratteristiche: GSS-Negozia IDN IPv6 Largefile NTLM SSL libz

debug

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

  • Sto per connettersi () alla porta 443 di github.com (# 0)
  • Provando 13.229.188.59 ... connesso
  • Collegato a github.com (13.229.188.59) porta 443 (# 0)
  • Inizializzazione di NSS con certpath: sql: / etc / pki / nssdb
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: nessuno
  • Errore NSS -12190
  • Errore nell'handshake TLS, tentativo di 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 Accetta: /

  • Connessione interrotta. Nuovo tentativo di connessione

  • Chiusura della connessione # 0
  • Invia un'altra richiesta a questo URL: " https://github.com "
  • Sto per connettersi () alla porta 443 di github.com (# 0)
  • Provando 13.229.188.59 ... connesso
  • Collegato a github.com (13.229.188.59) porta 443 (# 0)
  • TLS disabilitato a causa di un precedente errore di handshake
  • CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: nessuno
  • Errore NSS -12286
  • Chiusura della connessione # 0
  • Curl errore di connessione SSL: (35) errore di connessione SSL

dopo aver aggiornato curl, libcurl e nss, git clone funziona di nuovo bene, quindi eccolo qui. il comando di aggiornamento è il seguente

sudo yum update -y nss curl libcurl


Grazie - questo ha funzionato meglio per me con bitbucket su un repository su un vecchio server CentOS 6.6 di un client con git 1.7.1
Eric Kigathi

Sto riscontrando questo problema con gitlab-ci runner. Il lavoro va bene dopo l'aggiornamento.
isca

6

Come ha detto JERC, assicurati di avere una versione aggiornata di git. Se stai usando solo le impostazioni predefinite, quando provi a installare git otterrai la versione 1.7.1. Oltre a scaricare e installare manualmente l'ultima versione di get, puoi anche farlo aggiungendo un nuovo repository a yum.

Da tecadmin.net :

Scarica e installa il repository 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

Quindi è necessario abilitare rpmforge-extra. Modifica /etc/yum.repos.d/rpmforge.repoe enabled = 0passa a enabled = 1sotto [rpmforge-extras]. Il file ha questo aspetto:

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

Dopo averlo fatto, puoi aggiornare git con

yum update git

Non sono sicuro del perché, ma suggeriscono di disabilitare rpmforge-extras (tornare a enabled = 0) e quindi di eseguire yum clean all.

Molto probabilmente dovrai usarli sudoper questi comandi.


Davvero un'ottima risposta! Risolti i miei problemi su Redhat (RHEL) 6.3.
Max

Invece di modificare manualmente il file repo due volte (prima abilita gli extra e poi disabilitalo di nuovo), ho appena eseguito yum install --enablerepo=rpmforge-extras gite quello l'ho modificato!
alleen1

6

Sono riuscito a far funzionare un git 1.7.1 dopo un po 'di tempo.

Innanzitutto, ho dovuto disabilitare SSL solo per poter estrarre:

git config --global http.sslverify false

Quindi potrei clonare

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

Quindi, dopo aver aggiunto e confermato, non ero in grado di respingere. Così ho fatto

git remote -v

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

per vedere gli indirizzi pull e push:

Questi devono essere modificati con USERNAME @

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

Ti verrà comunque richiesta una password, che potresti aggiungere con

USERNAME:PASSWORD@github.....

Ma non farlo, poiché salvi la password in chiaro per un facile furto.

Ho dovuto fare questa combinazione poiché non riuscivo a far funzionare SSH a causa delle limitazioni del firewall.


4

Questa è la risposta più stupida a questa domanda, ma controlla lo stato di GitHub . Questo mi ha preso :)


Messaggio di oggi: "Stiamo ancora lavorando per mitigare un attacco DDoS di grandi dimensioni. Il sito è ora disponibile per alcuni utenti ma rimarremo in rosso finché non saremo sicuri che il sito rimarrà attivo". Chi hackera GitHub? Veramente?
BenDundee

ovviamente non homakov, si impegna a padroneggiare invece di DDoS
nurettin

3

Ho avuto lo stesso problema ed errore. Nel mio caso era il https_proxy non impostato. L'impostazione della variabile d'ambiente https_proxy ha risolto il problema.

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

Esempio:

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

Spero che questo aiuti qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.