我正在尝试在CentOS盒子上做一个简单的git clone https://github.com/org/project.git
,但得到:
错误:请求的URL在访问时返回错误:401 https://github.com/org/project.git/info/refs
致命:HTTP请求失败
它永远不会提示我输入我的用户名/密码,只是失败了。
我可以在我的Mac上拨打完全相同的电话没问题 - 我错过了什么?
答案 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
完成此操作后,您可以使用
更新gityum 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
希望这有助于某人。