无法通过 HTTPS 在 Linux 上克隆 GitHub 仓库
- 2024-11-12 08:36:00
- admin 原创
- 22
问题描述:
我尝试git clone https://github.com/org/project.git
在 CentOS 机器上做一个简单的操作但是得到:
错误:访问https://github.com/org/project.git/info/refs时,请求的 URL 返回错误:401
致命:HTTP 请求失败
它从不提示我输入用户名/密码,只是失败。
我可以在 Mac 上毫无问题地拨打同样的电话——我错过了什么?
解决方案 1:
答案很简单,但并不明显:
而不是:
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 历史记录中)
这三种方法在我的 Mac 上都有效,但只有最后两种方法在远程 Linux 机器上有效。(回想起来,可能是因为我在 Mac 上设置了全局 git 用户名,而在远程机器上没有?可能是这样,但是缺少用户名提示让我很为难……)
我还没有在任何地方看到过关于此的记录,所以就在这里。
解决方案 2:
您可以手动禁用 SSL 验证,然后重试。:)
git config --global http.sslverify false
解决方案 3:
我遇到了同样的问题,错误信息和操作系统信息如下
操作系统信息:
CentOS 版本 6.5(最终版)
Linux 192-168-30-213 2.6.32-431.el6.x86_64 #1 SMP 2013 年 11 月 22 日星期五 03:15:09 UTC 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 信息: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 file https ftps scp sftp 功能:GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
调试
$ curl --verbose https://github.com
即将连接()至 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 用户代理: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 ”
即将连接()至 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 更新 -y nss curl libcurl
解决方案 4:
确保您拥有 git 1.7.10 或更高版本,它现在会正确提示用户/密码。(您可以在此处下载最新版本)
解决方案 5:
我必须指定用户名才能在 1.7.1 git 版本上工作:
git remote set-url origin https://username@github.com/org/project.git
解决方案 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
这些命令。
解决方案 7:
经过相当长一段时间后,我才能够让 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 正常工作,因此我必须执行这种组合。
解决方案 8:
这是对这个问题最愚蠢的回答,但请检查 GitHub 的状态。这个回答让我很受启发 :)
解决方案 9:
我遇到了同样的问题和错误。就我而言,是未设置 https_proxy。设置 https_proxy 环境变量解决了该问题。
$ export https_proxy=https://<porxy_addres>:<proxy_port>
例子:
$ export https_proxy=https://my.proxy.company.com:8000
希望这对某人有帮助。
解决方案 10:
这里的每个答案都早于 2021 年,但 2021 年 https 身份验证的工作方式发生了重大变化。2021 年 8 月,Github 删除了从 cli 使用您的帐户密码的支持。您仍然可以使用 HTTPS,但您需要设置个人访问令牌来代替您的密码。
Git 的命令行提示您输入密码时会产生误导。事实上,Git 希望您使用个人访问令牌 (PAT) 而不是密码。在命令行中,PAT 会替换密码,当命令行提示您输入密码时,您输入的是 PAT 而不是密码。
从 Github 网站登录然后:
点击您的图标
选择设置
进入开发者设置
单击个人访问令牌(它为您提供了细粒度令牌或经典令牌的选择)
单击生成新令牌(并指定令牌的访问级别)
创建 Token 后,登录你的 Linux 服务器(例如 RHEL8)并克隆 repo,无需指定用户名和密码:
git clone https://github.com/org/repo-name.git
Username for …
Password for …
然后它会提示输入用户名和密码。对于用户名,请指定您用于登录网站的 github 用户名。对于密码,请指定您上面创建的令牌。然后它将成功克隆 repo。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件