Remote-SSH 连接失败主因是 SSH 密钥配置错误,需检查终端直连、IdentityFile 路径与权限;Dev Container 启动超时应调高 containerStartupTimeout 并优化构建阶段;WSL 命令缺失需修正 /etc/environment 或 shell 配置;Remote-Tunnel 失败本质是 GitHub 凭据未授权或网络拦截。

Remote-SSH 连不上目标机器,Permission denied (publickey) 怎么办
根本不是插件问题,是 SSH 密钥没对上。VS Code 的 Remote-SSH 插件完全复用本地 ssh 配置和密钥链,它自己不生成、不管理密钥。
实操建议:
- 先在终端里手动运行
ssh user@host,确认能连——如果这里失败,VS Code 也必然失败 - 检查
~/.ssh/config里对应 Host 的IdentityFile路径是否正确,文件权限是否为600(chmod 600 ~/.ssh/id_rsa) - Windows 用户若用 OpenSSH,注意密钥不能是 PuTTY 格式(
.ppk),得用puttygen转成 OpenSSH 格式再保存 - 如果目标机器禁用了密码登录,又没配好公钥,
Remote-SSH会卡在“Resolving host…”后直接报Permission denied (publickey),不会弹密码框
Dev Container 启动报错 The container did not start in time
这不是容器挂了,是 VS Code 等待初始化超时了——默认只等 60 秒,而某些基础镜像拉取慢、或 postCreateCommand 执行耗时长,就直接判失败。
实操建议:
- 打开
.devcontainer/devcontainer.json,加一行:"remoteUser": "vscode"(避免某些镜像因用户权限卡住) - 把耗时操作(比如
yarn install或pip install -r requirements.txt)挪到Dockerfile的构建阶段,而不是靠postCreateCommand - 在配置里显式延长超时:
"containerStartupTimeout": 300(单位秒) - 别用
mcr.microsoft.com/vscode/devcontainers/base:alpine这类极简镜像跑 Python/Node 项目——它没装包管理器,postCreateCommand会因找不到npm或pip静默失败
Remote-WSL 启动后找不到项目依赖的全局命令(如 pnpm、rustc)
WSL 实例里装了命令,但 VS Code 没读到它的 $PATH。尤其是通过脚本安装的工具(curl -fsSL https://get.pnpm.io/install.sh | sh),默认只写进 shell 的 profile,而 VS Code 启动时用的是非登录 shell。
实操建议:
- 把工具安装路径加进 WSL 的
/etc/environment(全局生效),例如追加:PATH="/home/username/.local/share/pnpm:/usr/local/bin:/usr/bin:/bin" - 或者在 WSL 的
~/.bashrc或~/.zshrc末尾加export PATH="$HOME/.local/share/pnpm:$PATH",然后重启 VS Code(不是重开窗口,是彻底退出再启动) - 验证方式:在 VS Code 终端里执行
echo $PATH,确认路径已包含;再执行which pnpm,应返回有效路径 - 注意:Windows 上的
PATH对 WSL 里的 VS Code 完全无效,别试图在 Windows 环境变量里加 WSL 工具路径
Remote-Tunnel 报错 Failed to fetch tunnel configuration
这个错误基本等于“你没连上 GitHub”。Remote-Tunnel 本质是让本地 VS Code 通过 GitHub 的中继服务对外暴露端口,所有鉴权和隧道元数据都走 GitHub API。
实操建议:
- 先访问 GitHub Developer Settings → Personal access tokens → Tokens (classic),确认 token 有
admin:ssh_signing权限(不是repo或user) - 在终端里运行
gh auth login(需提前装ghCLI),选 GitHub.com + login with a web browser + paste token —— VS Code 的 Remote-Tunnel 会复用这个凭据 - 公司网络若拦截
api.github.com或github.com的 HTTPS 请求,会直接卡死;可临时切手机热点验证 -
Remote-Tunnel不支持自建 GitHub Enterprise,只认 github.com
远程开发真正卡点的,从来不是“装哪个插件”,而是 SSH 密钥链、Docker 构建上下文、WSL 的 shell 初始化顺序、以及 GitHub 凭据的跨工具复用逻辑——这些地方一断,整个流程就静默失败,连报错都不给你指明方向。










