WSL 中 Git Clone GitHub 仓库完整踩坑指南

WSL2 git clone命令无法克隆远程仓库 最近在往WSL2里拉取git仓库的时候,突然出现了这个问题,WSL2无法连接到git服务器,导致代码无法拉取下来,可能是因为我最近不小心修改了windows的防火墙设置,导致出现了这个问题。 阅读详情

本文基于一次真实的 WSL 环境调试过程整理,涵盖 SSL 证书验证失败、SSH 端口超时、凭据缓存残留等典型问题,提供从诊断到解决的完整路径。


一、问题背景

在 WSL(Windows Subsystem for Linux)环境下从 GitHub 克隆仓库时,常常会遇到以下几类报错:

现象报错关键词
HTTPS 证书验证失败server certificate verification failed. CAfile: ...
SSH 连接超时ssh: connect to host github.com port 22: Connection timed out
缺少 SSH 密钥no such identity: .../id_ed25519: No such file or directory
公钥认证被拒Permission denied (publickey)
Gitee 认证失败Incorrect username or password (access token)

这些问题的根源通常来自三个方面:WSL 与 Windows 证书链不同步、网络防火墙拦截 22 端口、Git 凭据缓存残留。


二、问题诊断:先搞清楚"卡在哪一层"

在动手修复前,先做两步快速诊断:

1. 确认 Git 的凭据助手配置

git config --get-all credential.helper
  • 输出 cache → 凭据存在内存中,用 git credential-cache exit 清除
  • 输出 store → 凭据存在 ~/.git-credentials,删除该文件即可
  • 无输出 → 未配置凭据助手,问题不在这一层

2. 确认 SSH 目录状态

ls -la ~/.ssh/

如果只有 config 和 known_hosts,说明尚未生成任何密钥,需要先创建。


三、HTTPS 方式的修复方案

方案 A:更新 CA 证书(首选,最安全)

WSL 中的 CA 证书库可能过时或不完整,导致无法验证 GitHub 证书链:

sudo apt update
sudo apt upgrade -y
sudo apt-get install --reinstall ca-certificates
sudo update-ca-certificates

方案 B:让 Git 使用 Windows 证书存储(WSL 专治)

WSL 内的 Git 与 Windows 主机的证书环境不同步时,可直接指定 Git 使用 Windows 的 schannel 后端:

git config --global http.sslBackend schannel

这是微软文档中针对 WSL 证书问题的官方建议。

方案 C:临时跳过验证(应急,不推荐长期使用)

git -c http.sslVerify=false clone https://github.com/xxx/yyy.git

用 -c 参数将配置限制在单次命令,比全局 http.sslVerify=false 安全得多。

方案 D:重置错误的全局 SSL 配置

如果之前手动设置过 http.sslCAInfo 导致路径失效:

git config --global --unset http.sslCAInfo
git config --global --unset http.sslVerify

四、SSH 方式的完整配置(推荐方案)

HTTPS 证书问题反复出现时,改用 SSH + 443 端口是最一劳永逸的方案。

第一步:配置 SSH 走 443 端口(绕过 22 端口封锁)

编辑 ~/.ssh/config(不存在则创建):

nano ~/.ssh/config

添加以下内容:

Host github.com
    Hostname ssh.github.com
    Port 443
    User git
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

原理:GitHub 官方支持通过 ssh.github.com:443 提供 SSH 服务,443 是 HTTPS 标准端口,几乎不会被防火墙拦截。

第二步:验证 GitHub 主机指纹

首次连接时会提示确认指纹。GitHub 官方公布的 ED25519 指纹为:

SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU

确认一致后输入 yes 继续。

第三步:生成 SSH 密钥

ssh-keygen -t ed25519 -C "your_email@example.com"

三次提示的处理方式:

  1. 保存路径:直接回车,使用默认 ~/.ssh/id_ed25519
  2. passphrase:可留空(免密使用),也可设置(更安全)
  3. 确认 passphrase:与上一步一致

第四步:设置正确的文件权限(关键!)

SSH 对权限非常敏感,权限过宽会导致密钥被拒绝加载:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

第五步:将公钥添加到 GitHub

  1. 查看并复制公钥:

    cat ~/.ssh/id_ed25519.pub
    

    复制整行内容(以 ssh-ed25519 开头)。

  2. 登录 GitHub → Settings → SSH and GPG keys → New SSH key

    • Title 随意填(如 WSL-DESKTOP)
    • Key type 选 Authentication Key
    • 粘贴公钥内容,点击 Add SSH key

第六步:验证连接

ssh -T git@github.com

成功时会返回:

Hi <你的用户名>! You've successfully authenticated, but GitHub does not provide shell access.

第七步:克隆仓库

git clone git@github.com:DeepRoboticsLab/deep_robotics_model.git

五、Gitee 认证失败的额外处理

Gitee 已停用密码进行 HTTPS 克隆,必须使用个人访问令牌(PAT):

  1. Gitee 网页端 → 设置 → 安全设置 → 私人令牌 → 生成新令牌

  2. 勾选 projects 等所需权限,生成后立即复制保存(仅显示一次)

  3. 清除本地凭据缓存:

    git config --global --unset credential.helper
    rm -f ~/.git-credentials
    git credential-cache exit
    
  4. 重新 git clone,密码处粘贴 PAT 而非登录密码

注意:git config --system --unset credential.helper 需要 root 权限,普通用户会报 Permission denied,改用 --global 即可。


六、WSL 环境的额外提示

1. 跨系统凭据管理器干扰

WSL 中的 Git 可能调用 Windows 的凭据管理器。若 Linux 侧清理无效,可在 Windows 凭据管理器(控制面板 → 用户账户 → 凭据管理器 → Windows 凭据)中删除 git:https://github.com 或 git:https://gitee.com 开头的条目。

2. 代理环境

如果处于公司网络或使用代理,需为 Git 配置代理,或将公司根证书导入系统信任库:

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

3. 善用 -c 参数

临时覆盖任何 Git 配置而不污染全局环境:

git -c credential.helper= clone <url>
git -c http.sslVerify=false clone <url>

七、推荐排查顺序(速查表)

┌─────────────────────────────────────┐
│ 1. git clone 报错?                  │
└──────────────┬──────────────────────┘
               │
       ┌───────┴────────┐
       │                │
   HTTPS 报错        SSH 报错
       │                │
       ▼                ▼
  ┌─────────┐      ┌──────────────┐
  │ 证书问题 │      │ port 22 超时  │
  └────┬────┘      └──────┬───────┘
       │                  │
       ▼                  ▼
  ① 重装 CA 证书      ① 配置 443 端口
  ② sslBackend=schannel  ② 生成 SSH 密钥
  ③ 临时 sslVerify=false ③ 添加公钥到 GitHub
                         ④ chmod 600 权限
                         ⑤ ssh -T 验证

八、核心经验总结

问题最佳解法
WSL 证书验证失败git config --global http.sslBackend schannel 或重装 ca-certificates
22 端口超时SSH 走 ssh.github.com:443
缺少密钥ssh-keygen -t ed25519 + 添加到 GitHub
权限过宽被拒chmod 600 ~/.ssh/id_ed25519
Gitee 认证失败使用 PAT 替代密码 + 清除凭据缓存
--system 权限拒绝改用 --global 或 --local 作用域

一条黄金建议:在 WSL 中访问 GitHub,优先使用 SSH over 443。一次配置,永久解决证书、端口、认证三重问题,比 HTTPS 方式稳定得多。

WSL2新装后Git克隆GitHub仓库的443端口拒绝连接:从解析到协议的完整排错指南 本文针对WSL2新装后执行git clone命令时遇到的GitHub 443端口拒绝连接错误,提供了一套从网络连通性、Hosts文件检查到HTTP/2协议兼容性问题的完整系统性排错指南。通过逐层排查,帮助开发者快速定位并解决WSL2环境下Git克隆GitHub仓库的常见网络障碍。 阅读详情

相关推荐

WSL2新手避坑:解决Git Clone GitHub时神秘的443端口拒绝连接问题(附完整排错流程)

本文详细解析了WSL2在Windows 11系统中Git Clone GitHub时出现443端口拒绝连接问题的原因及解决方案。通过逐层诊断DNS解析、HTTPS连接和SSH配置,提供完整的排错流程和高级网络调试技巧,帮助开发者快速解决网络连接问题。

weixin_26757925的博客 305

解决 git clone error —— RPC failed

解决使用 git clone 命令报错 RPC failed 的问题,巩固学习 git 命令行操作。 众所周知,git clone 有两种方式: HTTP 或 SSH 连接远程机器。我这里使用的是 HTTP

L2010pc_web的专栏 5364

WSL 下配置 Git 完整指南:从安装到 SSH 免密与多账号

Git 是版本控制的事实标准,但开发者在 Windows 环境下常因换行符、路径兼容和认证问题浪费大量时间。WSL(Windows Subsystem for Linux)提供了完整的 Linux 内核环境,让 Git 行为与生产服务器保持一致。理解 SSH 密钥认证原理,掌握免密配置与多账号隔离方法,是提升效率的关键。本文从 WSL 环境准备、Git 安装与全局配置、SSH 密钥生成与管理,到日常提交与冲突处理,系统梳理了在 WSL 中配置 Git 的完整流程,帮助开发者规避常见坑点,实现与 Linux

weixin_42545503的博客 305

Docker + Git Clone 实战:从代码到容器化部署的完整指南

容器化技术通过将应用及其依赖打包成标准化的镜像,从根本上解决了开发、测试、生产环境不一致的经典难题。其核心原理是利用隔离的容器环境,确保应用在任何地方都能以相同的方式运行,这为现代软件交付提供了可预测性和可重复性。在工程实践中,结合版本控制系统(如Git)与Docker,能够构建一条从代码获取到环境交付的自动化流水线,实现“一次构建,处处运行”的DevOps理想状态。通过理解Dockerfile、构建上下文、多阶段构建等关键概念,开发者可以编写高效的构建脚本,优化镜像层缓存,并安全地处理私有仓库认证。这一技

weixin_33889245的博客 411

WSL2下git clone失败:防火墙与代理配置全解析

本文详细解析了WSL2环境下git clone失败的常见问题,特别是防火墙与代理配置的解决方案。通过分析WSL2的网络架构,提供了添加防火墙规则、配置git代理等实用技巧,帮助开发者快速解决远程仓库访问问题,提升开发效率。

weixin_28312391的博客 490

GitHub加速神器FastGithub:解决git-clone、git-pull失败的终极方案

本文详细介绍了FastGithub这一GitHub加速神器,有效解决git-clone、git-pull等操作失败问题。通过本地Git配置优化、网络层加速方案及跨平台解决方案,帮助开发者提升Git操作效率,确保流畅的开发体验。

weixin_29231725的博客 468

VS code的WSL 下git clone

VS code的WSL 下git clone 1. sudo apt-get install git 2. sudo git config --global user.name "xxx" 3. sudo git config --global user.email "XX" 4. git config --list 5. ssh-keygen -t rsa -C "804944518@qq.c...

luxuiary的博客 1462

GitHub多账号配置:SSH密钥隔离与Git身份分流实战

GitHub多账号管理是开发者日常协作的基础能力,其本质是解决SSH身份认证与Git提交作者信息的双重绑定问题。原理上依赖OpenSSH的Host别名路由机制与Git配置的local优先级策略,通过独立密钥对、~/.ssh/config分流及仓库级user.email强制设置,实现不同账号间的完全隔离。该方案具备零第三方依赖、跨平台兼容(macOS/WSL2/Linux)、可审计性强等工程优势,广泛应用于企业开发、开源贡献与教学管理等场景。本文聚焦SSH密钥命名规范、IdentitiesOnly安全配置、克

weixin_30435261的博客 482

WSL 跑项目:git clone、cp、rsync 到底怎么选?

虽然能用,但跑 Node 项目时可能会慢,也可能遇到文件监听、权限、依赖兼容问题。今天踩了一个 WSL + GitHub clone 的坑,顺手整理一下。,复制过去后它仍然是一个 Git 仓库。是“运行 Linux 项目的地方”。是“更聪明地复制/同步一份”。这类依赖或构建产物,更推荐用。很重要,表示复制目录里的内容。是“重新从网上下载”。是“直接复制一份”。不一定非要硬刚网络。

weixin_73747807的博客 191

Git for Windows 安装配置深度指南:从踩坑到企业级稳定实践

Git 是分布式版本控制系统的标准实现,其在 Windows 平台的可靠运行依赖于终端环境、行尾转换(CRLF/LF)、SSH 认证、凭据管理(Git Credential Manager)及中文路径支持等多重机制协同。理解 core.autocrlf 行尾策略与 credential.helper 凭据助手的工作原理,是避免提交失败、权限拒绝和乱码问题的技术前提;而 MSYS2 兼容层、OpenSSH 集成和 Windows 凭据管理器的深度耦合,则决定了 Git 在 VS Code、CI/CD 及多工具

weixin_30240349的博客 389

Git仓库下载:如何正确获取可复现的源码快照

Git仓库下载不是简单的文件复制,而是保障代码版本可追溯、环境可复现、协作历史完整的工程实践基础。其核心原理在于保留.git元数据、.gitignore语义及submodule声明,区别于仅含tracked文件的zip/tar包。技术价值体现在离线部署可靠性、论文复现实效性与遗留项目接手安全性上。典型应用场景包括AI模型训练环境搭建、CI/CD自动化拉取、科研代码归档等。尤其当涉及requirements.txt依赖约束和models/目录结构完整性时,必须采用git clone或git archive而非

weixin_34293246的博客 414

wsl的git clone解决

【代码】wsl的git clone解决。

2402_87385120的博客 319

GitHub实战入门:从clone到PR全链路避坑指南

GitHub不仅是代码托管平台,更是基于Git状态机的分布式协作系统。理解工作区、暂存区、本地仓库与远程仓库四层抽象,是解决‘git push被拒绝’‘PR无提交’等高频问题的根本前提。本文聚焦Git底层契约与GitHub协作协议的对齐实践,覆盖SSH密钥配置、remote绑定、user.email一致性、分支跟踪设置(-u参数)、PR自动合并失败排查等核心场景,特别适合刚完成首个Python脚本、需快速接入团队开发流程的新手开发者及一线带教工程师。通过终端命令逐帧验证,让每一次commit、push、PR

weixin_34112399的博客 209

告别git clone:用cpdown精准下载Git仓库的单个文件或目录

在软件开发和DevOps实践中,高效获取代码资源是提升工作效率的关键。传统上,开发者常使用git clone命令获取整个代码仓库,但这在只需查看单个配置文件、工具脚本或示例代码时,会造成时间、带宽和存储空间的显著浪费。针对这一痛点,精准下载技术应运而生,它通过解析代码托管平台的API,实现了对仓库内特定文件或目录的按需获取,其技术价值在于极大地优化了资源拉取流程,尤其适用于快速学习参考、CI/CD流程集成和自动化脚本等场景。本文介绍的cpdown工具,正是这一理念的杰出实践,它作为一个轻量级命令行工具,完美

weixin_30432579的博客 589

2025年12月11日 Coherent收发器下沉到数据中心:调研

技术可行性已基本具备。随着3nm DSP技术的成熟和Coherent-Lite等低功耗方案的推出,Coherent技术与IMDD的功耗差距在800G及以上速率节点快速缩小。特别是在1.6T及更高速率,两种技术的功耗开始趋于收敛。同时,通过系统级优化,如将DSP功能从可插拔模块转移到ASIC芯片,可实现30%以上的功耗降低。在成本方面,硅光技术的进步使得单通道硅光引擎BOM成本降至18美元,较2020年下降62%,逼近InP方案的经济临界点。光学系统机会丰富多样。

weixin_51184047的博客 1167

别再折腾虚拟机了!手把手教你用WSL2在Windows 11上安装Kali Linux(含汉化与图形界面)

本文详细介绍了如何在Windows 11上通过WSL2安装和配置Kali Linux,包括汉化与图形界面设置。通过WSL2,用户可以享受接近原生性能的Linux体验,同时保持与Windows系统的无缝集成,特别适合网络安全爱好者和开发者。文章还提供了常见问题解决和性能优化建议,帮助用户高效使用Kali工具集。

weixin_42525369的博客 321

Git從入門到「入坑」:一個新手的環境配置與踩坑實錄

—AtomGit春季徵稿·開源入門實戰分享。

ch_yang123的博客 354

从机械臂示教到厨房做饭:ACT模仿学习如何让机器人更“人性化”?

本文探讨了ACT(Action Chunking with Transformers)模仿学习技术如何让机器人更“人性化”,特别是在厨房等复杂场景中的应用。通过动作分块(Action Chunking)和时态融合(Temporal Ensemble)技术,机器人能够像人类一样记忆和执行复杂任务,如烹饪。文章还分析了ACT在家庭场景中的落地挑战及其在康复医疗、柔性制造等领域的跨领域应用潜力。

weixin_30613343的博客 254

Git 从安装到配置:新手完整指南

本文提供了Git从安装到配置的完整新手指南。

2501_92916940的博客 3744

【船舶】风浪流模型水面船舶三自由度运动仿真【含Matlab源码 4379期】

风浪流模型水面船舶三自由度运动仿真 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 692

模组 RG500Q入网问题分析

- [ ] 不同于公网,在5G专网环境中, 通常使用很多非标准的网络配置,如PLMN/APN等。因此,5G模组在专网环境下通常要做一些专门的配置才能正常入网,本文分析一例在专网环境, 5G终端无法入网问题的定位过程。 - [ ] 具体涉及到以下模组操作: 恢复出厂、SA only、锁BAND、配置MBN等

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 932

如何快速安装和配置git-hub:告别浏览器操作GitHub的终极指南

你是否厌倦了在浏览器和终端之间来回切换来管理GitHub仓库?**git-hub**命令行工具正是你需要的解决方案!这款强大的GitHub加速工具让你直接在终端中执行所有GitHub操作,彻底告别繁琐的浏览器界面。通过简单的`git hub`命令,你可以轻松管理仓库、关注用户、创建issue等,大幅提升开发效率。 ## 🚀 git-hub是什么?为什么你需要它? **git-hub**是一个

gitblog_00520的博客 449

HTML爱心字母雨(完整代码)

HTML语言实现爱心字母雨的完整代码。

AIGC 2万+

安装Git的配置

安装并配置git

u012141621的博客 187

【2026OD新机考】【哈希表】20260422-文章特征提取【Py/Java/C++/C/JS/Go六种语言OD真题】【欧弟算法】全网注释最详细分类最全的华子OD真题题解

90+天陪伴式学习,100+直播课时,300+动画图解视频,500+LeetCode经典题,500+华为OD真题/大厂真题,还有简历修改、模拟面试、陪伴小群、资深HR对接将为你解锁。这道题的本质是多集合交集问题的变形,属于非常典型的哈希表应用题。,储存全局的每个片段中,各个字符最少出现的次数。表示该字母并非所有片段的公共字母。,按照顺序构建答案即可。没有字母在所有三个字符串中都出现。每个字母在各字符串中都至少出现。次,所以结果中每个字母出现一次。这样,当上述循环结束后,最终。显然在上述代码中,如果字母。

weixin_48157259的博客 65

SAP 生产订单工序删除状态撤回简介

2、我们在前台对于生产订单的状态一个是在生产订单抬头中的状态,另外一个是针对上面一直在测试的是工序的状态,这个两个状态是前台可见的状态,实际生产订单还有一个组件物料的状态,这个状态是不可见的一个状态。生产订单中的0010工序中对应的组件的栏位被标识,表示有物料分配到了0010的工序中,正常情况下0010的工序被分配了工序是不应该被删除的。将已领料的工序删除掉,导致异常的发生。当物料已领料会,用户仍然把已分配的物料的工序删除掉,导致后续业务操作过程中产生异常,如下图中所示,0010的工序被打上了删除标识。

我小时候很黑的博客 1937
上一篇: ROS2 节点通信与 Daemon 机制:从 DDS 底层协议讲起
新元代码
博客等级 码龄23年 121粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值