无法通过 HTTPS 在 Linux 上克隆 GitHub 仓库

2024-11-12 08:36:00
admin
原创
21
摘要:问题描述:我尝试git clone https://github.com/org/project.git在 CentOS 机器上做一个简单的操作但是得到:错误:访问https://github.com/org/project.git/info/refs时,请求的 URL 返回错误:401致命:HTTP 请求失...

问题描述:

我尝试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 = 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这些命令。

解决方案 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 网站登录然后:

  1. 点击您的图标

  2. 选择设置

  3. 进入开发者设置

  4. 单击个人访问令牌(它为您提供了细粒度令牌或经典令牌的选择)

  5. 单击生成新令牌(并指定令牌的访问级别)

创建 Token 后,登录你的 Linux 服务器(例如 RHEL8)并克隆 repo,无需指定用户名和密码:

git clone https://github.com/org/repo-name.git
Username for …
Password for …

然后它会提示输入用户名和密码。对于用户名,请指定您用于登录网站的 github 用户名。对于密码,请指定您上面创建的令牌。然后它将成功克隆 repo。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用