无法通过HTTPS在Linux上克隆github存储库


87

我正在尝试git clone https://github.com/org/project.git在CentOS机器上做一个简单的操作,但是得到:

错误:访问https://github.com/org/project.git/info/refs时,请求的URL返回错误:401

致命:HTTP请求失败

它从不提示我输入用户名/密码,只是失败。

我可以在Mac上拨打完全相同的电话,没问题-我想念什么?


它在云上崭露头角的CentOS 6.3盒子
Yarin 2012年

@Yarin:我相信您已经读过这篇文章:help.github.com/articles/https-cloning-errors最后一种方法是使用我认为的ssh。另外,您可能想检查配置了git的电子邮件...不确定是否有帮助,但请确保它与您的github帐户使用的电子邮件相对应。
greg0ire 2012年

是的-这些都没有检查-从我的mac终端向Linux终端真正复制工作命令
Yarin 2012年

Answers:


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并且默认情况下会在您的Shell历史记录中显示为明文)

这3种方法都可以在Mac上使用,但只有最后2种方法可以在远程Linux上使用。(回想一下,这可能是因为我在Mac上设置了全局git用户名,而在远程机器上却没有?这可能是事实,但是缺少输入用户名的提示使我绊倒了。 )

在任何地方都没有看到此文档,所以在这里。


3
感谢您提及git config --global user.name细节,仅此而已!
GermanK 2013年

请注意,正如吉特1.7.10,你被提示输入用户名,根据@JERC,所以这应该不再是一个问题..
Yarin

我遇到了相同的问题(使用GIT 1.7.1,CentOS5),但是我无法将用户名/ pwd添加到URL中,因为我不得不从私有Bitbucket存储库中安装捆绑软件(显然,我不会添加用户名和将pw信息导入composer.json / composer.lock)。因为GIT不允许我手动键入它们,所以我不得不努力,并借助RPM Forge存储库(guru4hp.blogspot.hu/2012/08/…)更新了GIT 。我遵循在这里找到的@muness'指南:serverfault.com/questions/448814/…–
hattila

2
如果您在Linux上使用git 1.7.1,这就是答案
Louie Miranda 2014年

1
适用于如果使用1.7.10之前,任何东西
阿米特摹

32

您可以手动禁用ssl verfiy,然后重试。:)

git config --global http.sslverify false

3
对于具有Angstrom的BeagleBone Black,opkg不提供进行ssl验证所需的版本,因此这是我发现可行的唯一选择。
乔西亚2014年

1
@flickerfly语句有效。没有其他方法可以使用https进行克隆,除非在Angstrom OS中使用beaglebone black时使用此方法。
Funky81

1
在Centos上工作。谢谢。
2014年

禁用ssl验证有点危险。从理论上讲,恶意中间人可以向您发送经过修改的git repo。
Mark Doliner 2014年

使用GitLab时也必须这样做
Gerard,

12

确保您具有git 1.7.10或更高版本,它现在会正确提示用户名/密码。(您可以在此处下载最新版本)


4
我遇到了同样的问题,现在我升级到1.7.10时我的git版本是1.7.1,它会正确提示用户名/密码!,(版本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 Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

错误信息:

初始化/home/techops/pyenv/.git/中的空Git存储库密码:错误:访问https://waterdrops@github.com/pyenv/pyenv.git/info/refs时出错

致命:HTTP请求失败

git&curl版本信息

git info: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协商IDN IPv6大文件NTLM SSL libz

调试

$ curl-详细https://github.com

  • 即将connect()到github.com端口443(#0)
  • 尝试连接13.229.188.59 ...
  • 连接到github.com(13.229.188.59)端口443(#0)
  • 使用certpath初始化NSS:sql:/ etc / pki / nssdb
  • CAfile:/etc/pki/tls/certs/ca-bundle.crt CApath:无
  • NSS错误-12190
  • TLS握手中的错误,正在尝试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
  • 即将connect()到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连接错误卷曲:(35)SSL连接错误

在升级curl,libcurl和nss之后,git clone再次可以正常工作,所以就在这里。更新命令如下

须藤百胜更新-y nss curl libcurl


谢谢-这对我最适合在运行git 1.7.1的客户端旧CentOS 6.6服务器上的存储库上使用bitbucket
Eric Kigathi

我在gitlab-ciRunner上遇到这个问题。升级后工作正常。
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 = 0enabled = 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-extras(更改为enabled = 0),然后再运行yum clean all

您很可能需要使用sudo这些命令。


真是个好答案!解决了有关Redhat(RHEL)6.3的问题。
最多

而不是手动编辑回购文件两次(先启用Extras,然后再次禁用它),我才运行了yum install --enablerepo=rpmforge-extras git,然后删除了它!
alleen1

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?真?
2013年

显然不是霍马科夫,他致力于掌握而不是DDoS
nurettin 2013年

3

我有同样的问题和错误。在我的情况下,未设置https_proxy。设置https_proxy环境变量可解决此问题。

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

例:

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

希望这对某人有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.