如何将WSL中的Git SSH凭据传递至VS Code开发容器
将WSL中的Git SSH密钥传递到VS Code开发容器的方法
方法一:通过devcontainer.json自动挂载(推荐)
- 打开VS Code,找到开发容器的
.devcontainer配置文件夹,编辑devcontainer.json文件 - 添加挂载配置,将WSL的SSH目录绑定到容器对应位置:
注:如果容器使用非root用户,把"mounts": [ "source=${localEnv:HOME}/.ssh,target=/root/.ssh,type=bind,consistency=cached" ]/root/.ssh替换为容器内用户的SSH目录,比如/home/dev/.ssh - 重新构建或重启开发容器,容器即可直接读取WSL中已配置的SSH密钥
方法二:手动复制密钥到容器
- 在WSL终端中,分别导出私钥和公钥内容:
cat ~/.ssh/id_rsa、cat ~/.ssh/id_rsa.pub - 进入VS Code开发容器的终端,创建SSH目录:
mkdir -p ~/.ssh - 创建私钥文件并粘贴内容:
nano ~/.ssh/id_rsa,保存后设置权限:chmod 600 ~/.ssh/id_rsa - 创建公钥文件并粘贴内容:
nano ~/.ssh/id_rsa.pub,保存后设置权限:chmod 644 ~/.ssh/id_rsa.pub - 可选:若需要保留已信任的主机列表,可同步WSL中的
~/.ssh/known_hosts文件到容器对应位置,权限设为644
方法三:使用SSH代理转发
- 在WSL终端启动SSH代理并添加密钥:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa - 在
devcontainer.json中添加代理转发配置:"runArgs": [ "-v", "${localEnv:SSH_AUTH_SOCK}:/run/host-services/ssh-auth.sock", "-e", "SSH_AUTH_SOCK=/run/host-services/ssh-auth.sock" ] - 重启容器后,可通过代理直接使用WSL中的SSH密钥,无需挂载密钥文件
内容的提问来源于stack exchange,提问作者ziv
相关产品推荐
相关产品推荐

