必须先确保本地终端能通过 ssh user@host 成功连接远程主机,再安装 Remote-SSH 插件;配置时需在 ~/.ssh/config 中显式指定 HostName、User、Port 和 IdentityFile;连接后须在远程端安装 C/C++ 扩展及 g++、cmake 等工具,并将 tasks.json 和 launch.json 放入远程 .vscode 目录,program 路径须为远程绝对路径且可执行文件有 +x 权限。

确认远程主机已启用 SSH 服务
VS Code 的 Remote-SSH 插件本质是通过标准 SSH 协议连接并复用远程机器的开发环境,所以第一步不是装插件,而是确保你能从本地终端 ssh user@host 成功登录目标 Linux 服务器(Windows Subsystem for Linux 或树莓派等也适用)。常见卡点:
• 远程主机未安装 openssh-server(Ubuntu/Debian 执行 sudo apt install openssh-server)
• 防火墙拦截了 22 端口(检查 sudo ufw status 或 sudo firewall-cmd --list-ports)
• 使用非默认端口时,Remote-SSH 配置里必须显式写上 Port 2222(不能只靠 ~/.ssh/config 的别名隐含)
安装 Remote-SSH 插件并配置连接信息
在 VS Code 扩展市场搜索并安装官方插件 Remote - SSH(作者 Microsoft)。安装后按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac),输入 Remote-SSH: Connect to Host...,选择 Configure SSH Hosts...。这时会打开 ~/.ssh/config 文件,你需要手动添加类似以下内容:
Host my-cpp-server
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/id_rsa_cpp注意:
• HostName 必须是 IP 或可解析的域名,不能是局域网主机名(如 raspberrypi.local 可能失败)
• 若私钥有密码,VS Code 会在首次连接时弹窗要求输入;若没设密码,确保 IdentityFile 权限为 600(chmod 600 ~/.ssh/id_rsa_cpp)
• 不要依赖 ssh-agent 自动加载密钥——Remote-SSH 启动时不一定继承 shell 的 agent 环境
连接后安装 C++ 工具链与扩展
成功连接后,VS Code 窗口右下角会显示远程主机名,此时你看到的是远程文件系统。关键动作:在远程窗口中重新安装 C++ 相关扩展(不是本地装的那个):
• 在扩展面板搜索 C/C++(Microsoft 官方扩展),点击“Install on SSH: my-cpp-server”
• 确保远程主机已安装 g++、make、cmake(Ubuntu 执行 sudo apt install build-essential cmake)
• 若项目使用 CMake,建议同时安装 CMake Tools 扩展,并在远程工作区根目录放置 CMakeLists.txt
• tasks.json 和 launch.json 要放在远程项目的 .vscode/ 下,路径和工具路径(如 "${fileDirname}/build/${fileBasenameNoExtension}")都基于远程文件系统
立即学习“C++免费学习笔记(深入)”;
调试时常见路径与权限问题
远程调试 C++ 程序最常报错的是 Cannot launch program 'xxx' because corresponding file does not exist 或 Permission denied。根本原因通常是:
• launch.json 中 program 字段写的是本地路径(如 "./build/main"),但实际要填远程绝对路径(如 "/home/ubuntu/myproject/build/main")
• 可执行文件没有 +x 权限(远程终端执行 ls -l build/main 检查,缺失则 chmod +x build/main)
• 使用 gdb 调试时,远程主机未安装 gdb(sudo apt install gdb),或 VS Code 的 miDebuggerPath 指向错误(默认会自动找,一般不用改)
• 如果用 WSL2 作“远程”,别选 Remote-WSL 插件——它和 Remote-SSH 是两套机制,混用会导致 cpptools 初始化失败











