Clion远程开发git触发“No such device or address”的解决方案
项目场景
环境:
- 本地开发机: macos + CLion 2023.1.7
- 远程开发机: Parallels Desktop for mac 20 + Ubuntu20.04 arm64
- 项目类型:C++ CMake 工程,依赖通过 FetchContent 从私有 Git 仓库拉取的子模块
关键配置:
子工程通过 CMakeLists.txt 动态拉取,配置如下:
FetchContent_Declare(子工程GIT_REPOSITORY http://xxxxxx.git # 实际为私有仓库地址GIT_TAG 分支名 # 如 dev/mainGIT_SHALLOW TRUE # 仅拉取最新提交SOURCE_DIR ${3RDPARTY_DIR}/子工程 BINARY_DIR ${3RDPARTY_DIR}/子工程/build
)
FetchContent_MakeAvailable(子工程)
问题描述
现象:
- ✅通过终端 SSH 连接远程主机,手动执行 cmake 编译成功。
- ❌通过 CLion 远程开发模式执行 CMake 时失败,报错:
fatal: could not read Username for ‘https://x.x.x’: No such device or address
关键矛盾:
CLion 远程模式下 CMake 进程无法通过 Git 获取私有仓库的身份认证信息。
解决方案:
- 配置 Git 全局凭据存储
在远程主机(Ubuntu)中执行:
git config --global credential.helper store
- 手动触发凭据缓存
在远程主机中手动拉取一次子工程:
git clone http://xxxxxx.git # 使用实际仓库地址
按提示输入用户名和密码后,凭据会被记录到 ~/.git-credentials。
- 验证CLion远程编译
重新通过 CLion 执行 CMake 构建,此时:CMake 调用 Git 拉取代码, Git 自动从 ~/.git-credentials 读取凭据, 子工程拉取成功,编译流程正常完成。