remote-ssh是vscode官方远程开发扩展,原理为本地运行ui界面、远程部署vscode-server执行文件操作、调试和语言服务,而非浏览器开发者工具或本地同步方案。

VSCode 本身没有叫“开发者工具”的远程连接功能——你真正要用的是 Remote-SSH 扩展,它才是官方支持、稳定可用的远程开发入口。所谓“开发者工具”是常见误称,容易让人去翻 F12 或 DevTools 面板,结果白忙活。
Remote-SSH 是什么,为什么不能用浏览器开发者工具连服务器
Remote-SSH 不是调试网页的 DevTools,而是一套基于 SSH 协议的远程工作区代理机制:它在本地运行 VSCode UI,在远程服务器上自动部署轻量 vscode-server,所有文件读写、语言服务(如 Python 补全)、调试器(ptvsd 或 debugpy)都在远端执行。浏览器开发者工具只能 inspect 页面 DOM/Network,完全无法触达服务器文件系统或进程。
- 你看到的“开发者工具”字样,常来自混淆了 Chrome DevTools 和 VSCode 的 Remote Development 功能
- 想改服务器上的
app.py并直接 F5 调试?必须走Remote-SSH,不是按 F12 - 如果服务器没开 SSH 端口(默认 22),或者防火墙拦截了,
Remote-SSH连不上,这时候查网络比查控制台报错有用得多
首次连接时 ssh 配置文件怎么写才不踩坑
VSCode 读取的是 ~/.ssh/config,不是随便输个 user@ip 就完事。常见错误是忽略 Host 别名、端口、密钥路径这些关键字段,导致后续连接失败或反复输密码。
- 必须用
Host定义别名(如Host my-ecs),VSCode 的 SSH Targets 列表靠它识别 - 如果服务器 SSH 端口不是 22,一定要加
Port 2222,否则默认连 22,超时静默失败 - 用了密钥登录?必须显式指定
IdentityFile ~/.ssh/id_rsa_myserver,尤其当本地有多个密钥时,OpenSSH 不会自动猜 - 避免在配置里写
StrictHostKeyChecking no,虽然省事,但会跳过主机密钥验证,有中间人风险
连接成功后 Python 调试不起作用,大概率是解释器没选对
Remote-SSH 连上后,VSCode 默认用本地 Python 解释器,而不是服务器上的。你点 F5,实际是在本地起 python app.py,当然找不到服务器上装的 torch 或 fastapi。
- 打开命令面板(
Ctrl+Shift+P),输入Python: Select Interpreter,选带SSH: my-ecs前缀的那个路径 - 正确路径类似
/home/user/.pyenv/versions/3.11.9/bin/python,而不是C:\Users\...或/usr/bin/python3(那是本地路径) - 如果没出现远程解释器选项,说明远程服务器上还没装 Python,或没把
python加入$PATH,需要先 SSH 登上去确认which python3 - 调试配置
launch.json中的python字段必须留空,让 VSCode 自动读取已选解释器;填死路径(如"python": "/usr/bin/python3")反而会绕过远程上下文
内网机器没公网 IP,Remote-SSH 还能连吗
能,但得靠中转。VSCode 的 Remote-SSH 本身不解决 NAT 穿透,它只管建立 SSH 连接。所以你需要一个可被外网访问的跳板机,或用 cpolar/frp 把内网 SSH 端口映射出去。
- 最简方案:找一台有公网 IP 的云服务器做跳板,
~/.ssh/config里配ProxyJump,不用改任何服务端配置 - 如果只能用
cpolar,注意它默认映射 TCP 端口,而Remote-SSH必须走原生 SSH 协议(不是 HTTP),所以隧道类型必须选tcp,不是http -
cpolar tcp 22启的隧道,会在日志里输出类似tcp://xxxx.cpolar.io:12345,这时你的 SSH 配置里HostName要填xxxx.cpolar.io,Port填12345,不是 22 - 别指望用 cpolar 的 Web 界面代替 SSH 连接——那只是管理面板,和代码编辑无关
真正卡住人的地方,往往不是“怎么连”,而是连上之后 VSCode 没意识到自己正在远程环境里工作:插件没装到远端、终端默认开本地 shell、调试器路径硬编码成本地路径……这些细节不手动确认,光看绿色连接状态也没用。











