VSCode通过Remote-SSH扩展实现远程开发,即本地操作、远端执行;需安装官方Remote-SSH插件(非SSH FS等),配置~/.ssh/config实现一键连接,远程插件须手动安装至SSH目标,大项目首次打开的“假死”实为远程索引构建。

VSCode 本身不直接“连接”远程服务器,而是通过 Remote - SSH 扩展实现远程开发——它把本地 VSCode 的 UI 和编辑能力,对接到远程机器的文件系统、终端和语言服务上。这不是 FTP 同步,也不是 Web IDE,而是在本地操作、在远端执行。
装对扩展:只认 Remote - SSH,别装错名字
VSCode 官方 Remote 开发套件包含三个插件:Remote - SSH、Remote - Containers、Remote - WSL。云端开发最常用的是第一个。注意名称必须完全匹配——搜 “ssh” 时会出现几个相似名字(如 “SSH FS” 或 “SSH Client”),那些只是文件浏览或命令行工具,不支持完整开发环境(调试、扩展安装、智能提示等)。
- 在扩展市场搜索
Remote - SSH,作者是Microsoft - 安装后重启 VSCode,左下角状态栏会出现一个绿色图标,点击即可启动连接流程
- 如果已装了其他 SSH 相关插件,建议禁用,避免端口占用或配置冲突
ssh_config 文件比密码登录更稳,也更安全
VSCode 的 Remote - SSH 默认读取系统级 ~/.ssh/config。比起每次输 IP、用户名、端口,配好这个文件能一键连接,还支持跳转主机(Jump Host)、密钥自动选择、别名简化等。
例如,在 ~/.ssh/config 中添加:
Host my-cloud
HostName 192.168.100.50
User ubuntu
Port 22
IdentityFile ~/.ssh/id_rsa_cloud
ForwardAgent yes之后在 VSCode 里按 Ctrl+Shift+P → 输入 Remote-SSH: Connect to Host...,就能看到 my-cloud 这个选项,选中即连。
- 确保远程服务器的
sshd允许密钥登录(PubkeyAuthentication yes) - 如果远程是云厂商实例(如 AWS EC2、阿里云 ECS),私钥文件权限必须是
600(chmod 600 ~/.ssh/id_rsa_cloud),否则 SSH 拒绝加载 - 不要在
config里写PasswordAuthentication yes或明文密码——VSCode 不支持解析密码字段
远程扩展不是自动同步的,得手动设为“在 SSH 上安装”
你在本地装的插件(比如 Prettier、ESLint、Python)默认只运行在本地。远程开发时,语言服务、格式化、Linter 都得跑在远程机器上,否则路径不对、依赖找不到、Python 解释器识别失败。
- 打开远程窗口后,左侧扩展面板会多出“SSH: my-cloud”分类,点它再搜插件
- 找到插件后,点击右下角的“Install on SSH: my-cloud”按钮(不是“Install”)
- 常见必须装在远程的:
Python(含 Pylance)、Go、Rust (rls/analyzer)、PHP Intelephense;而主题、快捷键增强类插件仍走本地 - 如果某插件没出现在远程列表里,说明它标记为“仅客户端可用”(
"extensionKind": ["ui"]),这类无法用于远程
大项目首次打开慢?不是卡死,是 VSCode 在远程构建索引
第一次用 Remote - SSH 打开一个大型代码库(比如含数万文件的 Go 或 TypeScript 项目),VSCode 可能“假死”几十秒甚至几分钟。这不是崩溃,而是它在远程调用 find、stat 和语言服务器做初始 workspace indexing。
- 可观察远程机器的 CPU 和磁盘 I/O(
htop+iostat -x 1),通常能看到node或pyright进程在活跃扫描 - 临时缓解:在远程的
.vscode/settings.json中加"files.watcherExclude"排除node_modules、dist等目录 - 别强行关掉窗口重试——中断可能让语言服务器残留锁文件,下次启动更慢
真正容易被忽略的是:远程开发不是“把 VSCode 搬上云”,而是“把开发环境锚定在远端”。路径、权限、环境变量、甚至 shell 初始化脚本(~/.bashrc)都以远程为准。本地改了 PATH 没用,远程没装 rustup 就没法用 Rust 插件——这些细节,比连接本身更决定你能不能真正写下去。










