VS Code 远程开发
用 VS Code Remote-SSH 在 Windows 上直接开发 Linux 程序
- 来源
- 更新
标记说明:【来源】来自上传资料 · 【补充】课程新编 · 【纠错】按勘误表修正 · 【更新】过时内容已现代化 · 【待确认】无法可靠还原
本章含平台相关内容(platform_scope: distribution-specific)
以下【平台示例】仅为演示载体,不构成本课程依赖;不同架构/SoC/板卡/发行版的区别见【平台差异】标注,换平台时请完成文末「迁移训练」。
完成标准(本章)
- 📖 已阅读:滚动 ≥ 80% 且有效阅读 ≥ 90 秒
- ✏️ 已练习:小练习正确率 ≥ 60%
- 📝 已通过测验:分数 ≥ 60 分
- 🛠️ 已掌握还需完成实践任务
0.2.3 VS Code 远程开发
本章来源:远程连接流程来自《Linux IO》PAGE 7-10【来源】;版本要求已【更新】(不锁 VS Code 1.83,见 err-7.2-1);插件说明与练习为新编【补充】。 平台适用性:distribution-specific(Windows 宿主 + Ubuntu 远端为示例;换云服务器/开发板只改 ssh 目标)。
① 学习目标
- 安装 Remote - SSH 插件并连接 Ubuntu;
- 说出 Remote-SSH 的工作模型(本地界面、远端执行);
- 在远程终端执行验证命令;
- 掌握"先手动 ssh 排查、再查插件"的分层排障顺序;
- 建立标准远程开发工作流(实践任务)。
② 前置知识
- 必修:0.2.2(SSH 免密已就绪)。
③ 核心概念【来源+补充】
| 概念 | 说明 |
|---|---|
| Remote - SSH | 微软官方插件:本地渲染界面,远端运行 VS Code Server |
| VS Code Server | 通过 SSH 安装在远端的服务进程,负责文件/终端/编译 |
| 远端执行模型 | 代码、编译、运行全在远端;本地无代码副本 |
| 验证命令 | uname -a(证明是远端 Linux)、pwd(证明是远端路径) |
| 排障顺序 | 手动 ssh 能通 → 插件问题;不通 → sshd/网络问题(回 0.2.2) |
④ 通俗解释【补充】
把 VS Code 想象成"远程手术台":
- 你坐在本地(Windows),面前是监视器与操作杆(VS Code 界面);
- 真正动手的机械臂(VS Code Server)在手术室(Ubuntu)里;
- 连接线就是 SSH 隧道——你看到的是远端摄像头的画面,操作全部作用在远端;
- 所以代码没有"下载到本地"这一步:你编辑的就是远端文件,编译也在远端发生。好处是环境永远与真实 Linux 一致,不会出现"本地能跑、服务器报错"的差异。
⑤ 示例代码
代码示例与验证记录
- examples/remote-ssh-steps.txtRemote-SSH 连接与验证步骤✓ 文档核对(非执行)· VS Code 当前稳定版 + Remote-SSH, 2026-08-15编译:
按文件内顺序操作适用环境:LinuxWindows(MinGW)展开文档核对记录
左下角显示 "SSH: 用户名@IP" 远程终端执行 uname -a 显示 Linux
差异说明:版本与插件使用当前稳定版;连接失败按 0.2.2 的 SSH 排查清单处理
完整源码见 /code 代码示例页
⑥ 编译与运行方法
本章为连接与验证命令,无编译步骤;远程编译 C 程序见 0.2.4。
⑦ 常见错误
| 症状 | 原因 | 解决 |
|---|---|---|
| 连接超时 | 手动 ssh 都不通 | 回 0.2.2:sshd/网络/IP |
| 手动能通、插件不通 | 插件/Server 安装问题 | 看输出日志;升级到当前稳定版 |
| 【纠错】换旧版 VS Code 并关自动更新 | 历史规避手段 | 用当前稳定版,见 err-7.2-1 |
| 找不到远端 gcc | 远端未装编译器 | 远端执行 sudo apt install gcc |
⑧ 小练习
小练习
学习自测:提交后才显示答案与解析(前端判分,不作为正式考试)ex-0-2-3-1.VS Code 远程开发 Linux 需要安装的插件是?(单选)
◌ 未作答ex-0-2-3-2.Remote-SSH 连接的实质是?(单选)
◌ 未作答ex-0-2-3-3.判断:Remote-SSH 模式下,编译命令运行在远程 Linux 上,而不是 Windows 本地。(判断)
◌ 未作答
⑨ 章节测验
章节测验
⑩ 实战任务
实践任务
建立远程开发工作流并留档
用 Remote-SSH 连接 Ubuntu,在远程打开一个目录、在远程终端执行两条验证命令, 把整个流程截图留档,形成"Windows 开发机 + Linux 执行环境"的标准工作流。
输入与输出
无程序输入输出。交付物:远程连接成功的截图(左下角 SSH 标识 + 远程终端 uname -a 输出)与步骤笔记。
功能要求
- 安装 Remote - SSH 插件
- 添加并连接 Ubuntu 主机
- 远程打开一个目录(如 ~/learn)
- 远程终端执行 uname -a 与 pwd 并记录输出
限制条件
- 使用当前稳定版工具(不锁旧版本,见 err-7.2-10)
- 连接失败时先按 0.2.2 排查手动 ssh,再检查插件
验收步骤(自检清单 0/3)
验收标准
- 三项验收步骤全部达成并留档
常见失败原因
- 只装插件没装远端 sshd
- 连接后没选 Linux 平台
- 手动 ssh 都没通就直接折腾 VS Code
可选扩展
- 在远端安装 C/C++ 插件,为 0.2.4 远程编译做准备
- 配置 ssh config 别名(4.3.1 预告)
完成必要清单后才能计入"已完成实践"(学习状态自动推导,不提供一键完成)
⑪ 面试问题
面试问题
你平时怎么在 Windows 上开发 Linux 程序?Linux 系统编程 · easy
要点:VS Code + Remote-SSH 连 Linux 虚拟机/服务器,代码与编译都在远端。
工作流:本地 VS Code 只做编辑器界面,Remote-SSH 在远端启动 VS Code Server, 终端、编译、调试全部在 Linux 上执行。好处:环境与生产一致、避免 Windows/Linux 差异问题 (换行、路径、权限)。补充:也可用 WSL2、独立虚拟机或云服务器做远端,流程相同。
追问:- 追问:WSL2 和虚拟机选哪个?(体验与性能权衡,视需求)
评分要点:- 说明远端执行模型
- 提环境一致性
Remote-SSH 连不上,你的排查顺序是什么?Linux 系统编程 · medium
要点:手动 ssh 能通?→ 查 sshd/网络;不通 → 查插件与 VS Code 配置。
先隔离问题层次:①手动 `ssh 用户@IP` 是否成功——失败说明是 SSH/网络层(sshd 未启动、 IP 错误、防火墙),回 0.2.2 排查;②手动能通但插件不通——插件版本、远端平台选择、 VS Code Server 安装失败(可看输出日志);③都不行再升级 VS Code 与插件到当前稳定版。
追问:- 追问:VS Code Server 装在远端哪里?(~/.vscode-server)
评分要点:- 分层排查顺序
- 先手动 ssh
远程开发的代码和编译产物分别在哪里?Linux 系统编程 · easy
要点:都在远端:代码在远端磁盘,编译与运行在远端执行,本地只有界面渲染。
Remote-SSH 模型下本地不保存代码副本(编辑的是远端文件),编译产物也在远端。 因此远端机器需要有编译器(gcc)、磁盘与网络资源。要回传产物可用 scp/rsync, 或直接在远端 Git 提交后本地拉取——推荐后者(代码进版本库,机器只是环境)。
追问:- 追问:怎么把远端文件拉回本地?(scp/rsync/git)
评分要点:- 代码与产物在远端
- 回传方案
⑫ 延伸阅读
- VS Code 官方文档:Remote Development using SSH;
- OpenSSH 手册:
man ssh(客户端选项); - 下一章预告:0.2.4 第一个程序:Hello World 全流程——用刚搭好的环境跑起第一个 C 程序。
迁移训练(migration training)
把远程目标换成 云服务器 / 开发板 / WSL2: 不变的:Remote-SSH 流程、远端执行模型、验证命令; 要改的:ssh 目标地址(Host/IP/端口)、远端平台选择、开发板需先启动 sshd(阶段 7 讲)。
内容来源映射
| 内容部分 | 资料 | 位置 | 标记 | 说明 |
|---|---|---|---|---|
| VS Code 远程连接 Ubuntu 的操作流程 | Linux IO(1) | PAGE 7-10 | 【来源】 | 正文重新组织表述 |
| 版本要求 | Linux IO(1) | PAGE 7-8 | 【更新】 | 原文锁 VS Code 1.83 并关闭自动更新;已更新为当前稳定版(与 err-7.2-10 同源) |
| Remote-SSH 插件说明、故障排查、练习/测验/任务 | 无 | 【补充】 | 全部新编 |
本章勘误与更新记录(【纠错】/【更新】)
err-7.2-1 · 过时更新 · 出处 PAGE 7-8
原文:连接不上就换 VS Code 1.83 并取消自动更新
正确:使用最新稳定版 VS Code + Remote-SSH 插件即可;连接问题先排查 sshd 状态、网络连通与插件版本,再按官方文档升级。
原因:锁旧版本为历史规避手段;与 0.2.2 的 err-7.2-10 同源(本条目编号带 b 以满足勘误 id 全局唯一)。