VSCode 无法直接打开远端 FTP 文件,必须安装 SFTP 扩展(liximomo 维护);配置需用 SSH 密钥+agent、绝对 remotePath、合理设置 connectTimeout 和 keepalive,并避免 uploadOnSave 误覆生产环境。

VSCode 无法直接打开远端 FTP 文件,必须借助扩展
VSCode 本身不支持 FTP/SFTP 协议,点“文件 → 打开文件夹”选一个 sftp:// 地址会报错或静默失败。真正能用的只有第三方扩展,目前最稳定、更新活跃的是 SFTP(由 liximomo 维护)。别装名字类似但已弃坑的旧版(比如叫 ftp-sync 或 ftp-simple 的),它们不支持 VSCode 1.80+ 的 API 变更,连接后大概率卡在“Connecting…”或保存时无响应。
配置 sftp.json 时 host/user/password 不是唯一路径
明文写密码到配置里既不安全也不可持续——尤其当你用密钥登录或需要 MFA 时。实际应优先走 SSH 密钥 + agent 方式:
- 确保本地
ssh-agent已加载私钥:ssh-add -l能列出对应 key -
sftp.json中删掉password字段,只留"protocol": "sftp"、"host"、"port"、"username"和"remotePath" - 如果服务器禁用了密码登录(合理做法),漏掉
ssh-agent配置就会卡住,错误信息通常是Cannot connect: All configured authentication methods failed
另外,remotePath 必须以 / 开头且为绝对路径(如 "/var/www/html"),填相对路径或漏斜杠会导致同步失败但无明确提示。
保存即上传?小心覆盖生产环境或触发权限拒绝
SFTP 扩展默认开启 "uploadOnSave": true,改完本地文件一按 Ctrl+S 就直传远端——这在开发机上很爽,但在生产服务器上极其危险:
- 没开
"downloadOnOpen": true的话,你打开的可能是旧版本,编辑后上传等于覆盖最新内容 - 远端文件属主不是你的账号?常见报错
Permission denied (publickey)或Failed to upload: EACCES,得先确认username对目标目录有写权限 - 想临时停上传,别关扩展,右键编辑器标签页 →
Disable Upload on Save更快
断线/重连慢?检查 connectTimeout 和 keepalive
内网或高延迟链路下,默认 10 秒超时经常不够用,编辑中途突然断连又自动重连失败,表现为状态栏一直显示 Connecting...。在 sftp.json 里加这两项能稳很多:
"connectTimeout": 30, "keepalive": 60
keepalive 是秒级心跳间隔,设太小(如 10)可能被防火墙当异常流量;设太大(如 300)则断网后要等很久才触发重连。60 是平衡点。还有个隐藏坑:如果你用的是非标准 SSH 端口(比如 2222),port 字段必须显式写出,不能依赖 SSH config 的 Port 别名——SFTP 扩展不读 ~/.ssh/config。
真要映射远端目录到本地体验,别硬扛 SFTP 实时编辑;用 rsync 拉下来 + Git 管理 + 部署脚本,才是少出问题的常态。











