VSCode devcontainer同容器内克隆第二个仓库提示git permission denied
问题根因
- 当使用VSCode的「Clone repository in container volume」功能克隆仓库时,VSCode只会将本地的git/SSH凭证临时挂载到目标仓库对应的工作区上下文,仅对该单个仓库的操作生效,不会将凭证配置写入容器全局的
~/.ssh、~/.gitconfig等路径。 - 对主仓库的所有git操作(GUI端操作、终端内针对主仓库的pull/push)都是在VSCode的工作区上下文内执行,VSCode会自动将凭证传递给对应的git进程,因此可以正常运行。而在终端内直接执行第二个仓库的克隆命令属于全局git操作,无法获取到VSCode注入的工作区专属凭证,因此触发权限报错。
- 第二个仓库单独使用「Clone repository in container volume」可以正常克隆,是因为此时VSCode会为第二个仓库单独启动新的devcontainer实例,单独注入对应凭证,和运行主仓库的devcontainer是完全隔离的环境。
解决方案
方案1:开启SSH代理转发(永久生效)
在devcontainer配置文件.devcontainer/devcontainer.json中添加以下配置,开启本地SSH代理转发到容器:
"features": { "ghcr.io/devcontainers/features/sshd:1": { "forwardAgent": true } }
配置保存后重建devcontainer,后续容器内所有SSH协议的git操作都会自动复用本地的SSH凭证,无需额外配置。
方案2:临时配置容器内SSH密钥
如果不想修改devcontainer配置,可直接将本地有权限的SSH私钥内容复制到容器内的~/.ssh/id_rsa路径,执行以下命令调整权限后即可正常克隆:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
方案3:使用HTTPS协议克隆
直接将克隆命令替换为HTTPS格式,触发VSCode自带的凭证管理器弹窗授权即可正常克隆:git clone https://github.com/用户名/仓库名.git
内容的提问来源于stack exchange,提问作者jehon
相关产品推荐
相关产品推荐

