remote-ssh真远程开发需本地ssh命令、远程sshd服务、网络通路及vscode-server正确部署四者协同;任一环节失败均卡在连接或安装阶段,须逐项排查验证。

能连上、能编辑、能调试,才是真远程开发。Remote - SSH 不是“装个插件就完事”,它依赖本地 ssh 命令、远程 SSH 服务、网络通路、以及 vscode-server 在远端的正确部署——任一环节断掉,都会卡在“Connecting…”或“Installing VS Code Server…”不动。
确认本地 ssh 命令能通,再动 VSCode
VSCode 的 Remote - SSH 扩展底层直接调用你系统的 ssh 命令,不是自己实现协议。所以第一步永远是手动验证:
- 在终端(PowerShell / Terminal / iTerm)里执行
ssh user@host -p 2222(端口非 22 时必须带-p) - 如果报
command not found: ssh:Windows 需启用 OpenSSH 客户端(设置 → 可选功能 → 添加 OpenSSH 客户端);macOS/Linux 一般自带,但某些精简发行版可能没装 - 如果报
Connection refused或超时:检查远程sshd是否运行(systemctl status sshd)、防火墙是否放行端口、云服务器安全组是否开放对应端口 - 如果能登录并看到 shell,说明网络和认证没问题,VSCode 连不上大概率是配置或部署问题
~/.ssh/config 必须写全关键字段,不能只靠 HostName
VSCode 默认读取 ~/.ssh/config,但很多人只写 Host 和 HostName,漏掉必要项,导致连接卡死或报 Permission denied (publickey):
-
User字段必须显式指定,尤其当远程用户默认 shell 是/bin/bash但家目录权限为700时,VSCode 不会自动猜 - 若改过 SSH 端口(如阿里云常用 2222),必须加
Port 2222,否则默认走 22,连不上 - 用密钥登录时,
IdentityFile要写绝对路径,且私钥权限必须是600:chmod 600 ~/.ssh/id_rsa_prod - 推荐最小可用配置示例:
Host myprod HostName 192.168.10.5 User deploy Port 2222 IdentityFile ~/.ssh/id_rsa_prod StrictHostKeyChecking no
首次连接失败,大概率卡在 vscode-server 下载或解压
VSCode 首次连接会在远程自动生成 ~/.vscode-server 并下载对应 commit 的 server 二进制。国内用户常卡在这步,因为默认从 https://update.code.visualstudio.com 下载,域名不稳定、重定向多、校验严:
- 现象:左下角一直显示 “Installing VS Code Server…”,但远程
ls -la ~/.vscode-server/bin/为空或只有不完整哈希目录 - 别反复重试——每次失败都会残留损坏目录,干扰下次部署
- 手动补救流程:
① 从 VSCode 窗口左下角复制 commit ID(如6c3e3dba23e8fadc360aed75ce363ba185c49794)
② 浏览器打开https://update.code.visualstudio.com/commit:6c3e3dba23e8fadc360aed75ce363ba185c49794/server-linux-x64/stable下载vscode-server-linux-x64.tar.gz
③scp传到远程:scp vscode-server-linux-x64.tar.gz user@host:~
④ 登录远程,解压到指定路径:mkdir -p ~/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794 && tar -xzf vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794 --strip-components 1 - 顺手检查远程是否有
curl:which curl,没有就装:sudo apt install curl(Ubuntu/Debian)
远程扩展要单独装,路径和终端都以远端为准
连接成功后,所有操作都在远程发生。本地装的 Python/Pylance/Docker 插件不会自动生效,必须在远程窗口里重新安装:
- 点击左侧扩展图标,顶部切换到 “Remote: SSH” 标签页,搜索并安装需要的扩展
- 终端(
Ctrl+`)启动的是远程 shell,python --version、git status都是远端环境的结果 - 调试时断点路径必须是远端绝对路径,比如
/home/user/project/main.py,不是你本地的/Users/me/project/main.py - 建议在项目根目录建
.vscode/settings.json,明确指定解释器路径:{ "python.defaultInterpreterPath": "/usr/bin/python3" } - 如果远程家目录挂载在 NFS 或
/tmp被noexec挂载,~/.vscode-server就无法执行——这是静默失败最隐蔽的原因之一
真正麻烦的从来不是“怎么连”,而是连上之后发现 ~/.vscode-server 权限不对、磁盘满、locale 缺失导致中文乱码、或者 shell 启动脚本里有 echo 输出干扰了 VSCode 的协议握手——这些细节不手动查远端环境,只盯着 VSCode 界面是找不到根因的。











