我正在尝试git clone https://github.com/org/project.git
在 CentOS 机器上做一个简单的操作,但得到:
错误:请求的 URL 返回错误:访问 https://github.com/org/project.git/info/refs时出现 401
致命:HTTP 请求失败
它从不提示我输入用户名/密码,只是失败了。
我可以在我的 Mac 上拨打完全相同的电话没问题 - 我错过了什么?
我正在尝试git clone https://github.com/org/project.git
在 CentOS 机器上做一个简单的操作,但得到:
错误:请求的 URL 返回错误:访问 https://github.com/org/project.git/info/refs时出现 401
致命:HTTP 请求失败
它从不提示我输入用户名/密码,只是失败了。
我可以在我的 Mac 上拨打完全相同的电话没问题 - 我错过了什么?
答案很简单,但并不明显:
代替:
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 用户名,而在远程机器上我没有?可能是这样,但是缺少用户名提示让我绊倒了。 . )
还没有在任何地方看到这个记录,所以在这里。
您可以手动禁用 ssl 验证,然后重试。:)
git config --global http.sslverify false
我遇到了同样的问题,错误信息和操作系统信息如下
操作系统信息:
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
确保您拥有 git 1.7.10 或更高版本,它现在会正确提示输入用户/密码。(您可以在这里下载最新版本)
我必须指定用户名才能在 1.7.1 git 版本上工作:
git remote set-url origin https://username@github.com/org/project.git
正如 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
这些命令。
很长一段时间后,我能够让 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 工作。
这是这个问题的最愚蠢的答案,但请检查 GitHub 的状态。这个让我:)
我有同样的问题和错误。在我的情况下,它是 https_proxy 未设置。设置 https_proxy 环境变量解决了这个问题。
$ export https_proxy=https://<porxy_addres>:<proxy_port>
例子:
$ export https_proxy=https://my.proxy.company.com:8000
希望这对某人有所帮助。