05使用 VS Code 连接 SSH、WSL 与容器

区分本地界面与远端运行环境,按需安装 Remote SSH、WSL 和 Dev Containers,并管理远端扩展与设置。

2026-08-10
VS CodeRemote SSHWSLDev ContainersDocker
本章目录 · 7

VS Code Remote Development 保留本地窗口和界面,但把文件访问、terminal、语言服务与调试器放到 SSH host、WSL distribution 或 container 中运行。真正需要区分的是“代码在哪里运行”,不是为每个远端名称复制一份完整主题和编辑器设置。

按使用方式安装扩展

# SSH server
code --install-extension ms-vscode-remote.remote-ssh

# Windows Subsystem for Linux
code --install-extension ms-vscode-remote.remote-wsl

# Development container
code --install-extension ms-vscode-remote.remote-containers

需要浏览和管理本地 container/image 时,可以另外安装 Container Tools:

code --install-extension ms-azuretools.vscode-containers

这些扩展解决不同入口,不必因为使用 SSH 就同时安装 WSL 和 Dev Containers。确实需要“先 SSH 到 Linux,再进入远端 container”时,可以组合 Remote SSH 与 Dev Containers。Remote Development using SSH

SSH host 放在 SSH config

先在普通 PowerShell 中确认 SSH 可以连接:

ssh research-server

host、用户与 key path 应写在用户 SSH config,而不是公开的 VS Code settings:

Host research-server
    HostName server.example.invalid
    User analyst
    IdentityFile ~/.ssh/id_ed25519

随后运行 Remote-SSH: Connect to Host。首次连接时 VS Code 会识别远端平台;无法识别时选择 Linux、Windows 或 macOS,并在本机设置中生成类似内容:

{
  "remote.SSH.remotePlatform": {
    "research-server": "linux"
  }
}

这段映射包含个人 host alias,不应出现在公开参考配置中。认证使用 SSH key 或系统 agent,不要把 private key、密码或 token 写进 VS Code。

WSL 使用 Linux 环境

安装 WSL extension 后,在 WSL terminal 中进入项目并运行:

code .

窗口左下角应显示 WSL distribution。此时 integrated terminal 在 Linux 中运行,应该使用 Linux terminal profile,而不是试图通过下面的 Windows 设置选择 WSL shell:

{
  "terminal.integrated.defaultProfile.windows": "Command Prompt"
}

需要指定 WSL 远程窗口的 shell 时,在该远程设置中使用 terminal.integrated.defaultProfile.linux。R、Python、Git 和 package 必须安装在 WSL 内;Windows 上同名程序不会自动成为 Linux 环境的一部分。Remote development in WSL

Dev Container 配置跟随项目

Dev Container 的核心不是个人 Profile,而是仓库中的 .devcontainer/devcontainer.json

{
  "name": "Analysis",
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "customizations": {
    "vscode": {
      "extensions": [
        "reditorsupport.r",
        "quarto.quarto"
      ],
      "settings": {
        "files.eol": "\n"
      }
    }
  }
}

项目打开后运行 Dev Containers: Reopen in Container。运行环境和项目所需扩展因此与仓库一起版本管理,不必要求每个人建立一个同名个人 Profile。Create a Dev Container

示例 image 只提供基础系统;实际项目应选择明确版本、安装运行依赖,并审查构建脚本后再启动。

扩展有本地端和远端端

主题、图标和大部分界面扩展运行在本地;需要读取源码、调用 interpreter 或连接 debugger 的扩展通常安装在远端。连接后,Extensions view 会分别显示 Local 与 SSH/WSL/Container。

Settings Sync 不负责把扩展同步到远程窗口。R extension、Python extension 等语言工具需要在实际运行代码的远端安装;对应的 R package、Python environment 和编译器也必须存在于远端。VS Code Profiles

一套精简的 Remote Profile

个人 Remote Development Profile 只需要远端入口扩展:

ms-vscode-remote.remote-ssh
ms-vscode-remote.remote-wsl
ms-vscode-remote.remote-containers

只用其中一种入口时只安装对应一项。语言扩展在连接具体环境后按项目需要安装,主题和字体继续使用所有 Profile 共用的基础配置。

排错顺序

  1. 在 VS Code 外用 sshwsl 或 container CLI 验证环境本身可用;
  2. 检查窗口左下角当前连接目标;
  3. 在远端 terminal 中确认 Rpythongit 等命令来自远端;
  4. 在 Extensions view 确认语言扩展安装在正确一侧;
  5. 查看 Remote SSH、WSL 或 Dev Containers 对应的 Output channel;
  6. 不要通过复制另一台电脑的 host alias、绝对路径和缓存目录解决连接问题。

把连接、远端运行时和编辑器界面分开检查,比维护 Server、WSL、Docker 三份几乎相同的 Profile 更可靠。