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

时间:2012-09-21 21:03:39

标签: linux git github

我正在尝试在CentOS盒子上做一个简单的git clone https://github.com/org/project.git,但得到:

  

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

     

致命:HTTP请求失败

它永远不会提示我输入我的用户名/密码,只是失败了。

我可以在我的Mac上拨打完全相同的电话没问题 - 我错过了什么?

9 个答案:

答案 0 :(得分:202)

答案很简单但不明显:

代替:

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上设置了global git username,而在遥控器上我没有设置?那可能就是这种情况,但缺少用户名的提示会让我失望......)

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

答案 1 :(得分:32)

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

git config --global http.sslverify false

答案 2 :(得分:12)

确保你有git 1.7.10或更高版本,它现在正确提示用户/密码。 (您可以下载最新版本here

答案 3 :(得分:10)

我必须指定用于1.7.1 git版本的用户名:

scala> object Category {
 |     def id[A]: A => A = a => a
 | }
defined module Category

scala> Category.id[Int]
res0: Int => Int = <function1>

scala> res0(0)
res2: Int = 0

答案 4 :(得分: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

完成此操作后,您可以使用

更新git
yum update git

我不确定原因,但他们建议停用rpmforge-extras(更改回enabled = 0)然后运行yum clean all

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

答案 5 :(得分: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工作,所以我不得不这样做。

答案 6 :(得分:6)

我遇到了同样的问题,错误消息和操作系统信息如下

操作系统信息:

  

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 --verbose https://github.com

     
      
  • 关于将connect()连接到github.com端口443(#0)
  •   
  • 正在尝试13.229.188.59 ...已连接
  •   
  • 已连接到github.com(13.229.188.59)端口443(#0)
  •   
  • 使用证书路径初始化NSS:sql:/ etc / pki / nssdb
  •   
  • CAfile:/etc/pki/tls/certs/ca-bundle.crt   CApath:无
  •   
  • NSS错误-12190
  •   
  • TLS握手时出错,尝试使用SSLv3 ...   GET / HTTP / 1.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   主持人: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连接错误   curl:(35)SSL连接错误
  •   

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

  

sudo yum update -y nss curl libcurl

答案 7 :(得分:4)

这是这个问题的最愚蠢的答案,但是check the status of GitHub。这个让我:)

答案 8 :(得分:2)

我遇到了同样的问题和错误。就我而言,未设置https_proxy。 设置https_proxy环境变量解决了问题。

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

示例:

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

希望这有助于某人。