Rust : 无法通过 Cargo 拉取私有代码仓库解决方式 failed to load source for dependency

问题描述

在使用rust 的过程中,有时候会依赖一些公司内部,或者私有的代码仓库,这时候,通常需要使用ssh认证,才能正常拉取仓库代码,但是有时候会遇到 Cargo 无法拉取代码的情况,看起来像是 ssh 认证失败导致的无法拉取代码,报错如下:

rust 复制代码
Updating git repository `ssh://git@git.yourcompany.com/your-team/your-repo`
error: failed to get `private-crate` as a dependency of package `your-project v0.1.0 (/path/to/your-project)`

Caused by:
  failed to load source for dependency `private-crate`

Caused by:
  Unable to update ssh://git@git.yourcompany.com/your-team/your-repo

Caused by:
  failed to fetch into: /Users/yourusername/.cargo/git/db/your-repo-xxxxxx

Caused by:
  failed to authenticate when downloading repository

  * attempted ssh-agent authentication, but no usernames succeeded: `git`

  if the git CLI succeeds then `net.git-fetch-with-cli` may help here
  https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli

Caused by:
  no authentication methods succeeded

问题原因

默认新情况下,cargo使用内置的 libgit2 来拉取 git 依赖,而非系统自带的 git 命令行工具进行依赖拉取,libgit2 对 SSH 认证幼体套独立的实现,所以可能无法直接复用本地对ssh的配置,ssh-agent 环境变量 以及 SSH 密钥设置。

这就可能导致一个现象:正常使用 git clone 可以拉取到项目代码,但是 rust-analyzer 却总是报错无法拉取依赖,ssh 认证失败等问题。

解决方案

在你的项目中,添加 .cargo 文件夹,并在文件夹中创建 config.toml 文件,

bash 复制代码
your-project/
├─ .cargo/
│  └─ config.toml
└─ Cargo.toml

在config.toml 文件中添加以下配置

toml 复制代码
[net]
git-fetch-with-cli = true

就可以让 cargo 使用本机已安装的 git 命令行工具拉取配置,从而与手动拉取配置一样,正常获取到依赖。

验证

最后重启代码编辑器vscode,或者运行cargo b 进行验证,会发现问题已解决。Pomelo_刘金,转载请注明链接,感谢!

相关推荐
SomeB1oody6 小时前
【RustyML入门】5.0. 模型评估
开发语言·后端·机器学习·rust·教程
今天AI了吗9 小时前
Agent & AI 名词大扫盲
数据库·人工智能·python·sql·rust
SomeB1oody1 天前
【RustyML入门】4.2. 标准化与归一化
开发语言·后端·机器学习·rust·教程
leoZ2311 天前
Vue3 还原一个企业级后台-14-项目总结
开发语言·人工智能·后端·opencv·计算机视觉·数据挖掘·rust
特立独行的猫a1 天前
Tauri v2的Rust应用 → HarmonyOS(鸿蒙 PC)移植30分钟速成指南
开发语言·rust·harmonyos·tauri·移植·鸿蒙pc
程序员爱钓鱼1 天前
Rust 方法 Method详解:self、方法调用与API设计
后端·面试·rust
Patrick_Wilson2 天前
sccache 用在 Rust 上为什么常「不省编译」:原理、限制与 Windows 接入
ci/cd·rust·编译器
k4m7v2pz2 天前
rvs 26.8.43 → 26.8.53 更新概览:MCP 落地、审计增强与谬误澄清
rust·repl·mcp server·rust-verb-shell·rvs·shell 工具
程序员爱钓鱼2 天前
Rust impl详解:为Struct定义方法与关联函数
前端·后端·rust
k4m7v2pz2 天前
Rust 程序在 ReactOS 上“加载即崩“:从崩溃地址 0x6107104d 到 CRT 依赖的深度排查
rust·交叉编译·逆向工程·reactos·pe格式·windows兼容