92

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

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

致命:HTTP 请求失败

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

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

4

9 回答 9

214

答案很简单,但并不明显:

代替:

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,但只有最后两种适用于远程 Linux 机器。(回想一下,这可能是因为我在我的 Mac 上设置了一个全局 git 用户名,而在远程机器上我没有?可能是这样,但是缺少用户名提示让我绊倒了。 . )

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

于 2012-09-21T21:58:22.117 回答
33

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

git config --global http.sslverify false
于 2013-09-17T05:52:16.950 回答
13

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

操作系统信息:

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 版本信息

混帐信息:混帐版本 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)
  • 使用 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 连接错误 curl: (35) SSL 连接错误

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

sudo yum update -y nss curl libcurl

于 2018-11-28T07:05:30.180 回答
12

确保您拥有 git 1.7.10 或更高版本,它现在会正确提示输入用户/密码。(您可以在这里下载最新版本)

于 2013-12-17T22:42:41.833 回答
10

我必须指定用户名才能在 1.7.1 git 版本上工作:

git remote set-url origin https://username@github.com/org/project.git
于 2015-08-13T07:27:21.527 回答
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

完成此操作后,您可以使用以下命令更新 git

yum update git

我不知道为什么,但是他们建议禁用 rpmforge-extras(改回enabled = 0)然后运行yum clean all​​.

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

于 2014-05-22T16:48:35.913 回答
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 工作。

于 2014-09-22T12:29:07.320 回答
5

这是这个问题的最愚蠢的答案,但请检查 GitHub 的状态。这个让我:)

于 2013-08-15T16:25:46.703 回答
3

我有同样的问题和错误。在我的情况下,它是 https_proxy 未设置。设置 https_proxy 环境变量解决了这个问题。

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

例子:

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

希望这对某人有所帮助。

于 2015-07-02T21:03:14.317 回答