改一个外包做的老站,没有 Git,只能 FTP 传。同事推荐 VSCode 的 SFTP 插件,配完保存文件没反应,右下角一直转圈,最后弹 connect ETIMEDOUT。

配置文件放哪

工作区根目录下 .vscode/sftp.json,插件只认这个位置。多台服务器可以写 profiles,用 name 区分。host 填 IP 或域名,port 默认 21 是 FTP,SFTP 是 22,填错就一直超时。protocol 要和服务端一致,很多虚拟主机只开 FTP,不支持 SFTP。

remotePath 和上下文

remotePath 是远程根目录,比如 /www/wwwroot/site。context 决定本地哪个目录映射过去,默认是整个工作区。映射错了会出现上传到别人目录的情况,配完先用 remote explorer 看一眼目录结构再传。

保存自动上传

uploadOnSave 设为 true,Ctrl+S 就传。downloadOnOpen 会在打开文件时拉取远端版本,网络慢的时候很烦,建议关掉。ignore 列表里加上 node_modules、.git、dist,不然一次保存触发几百个文件同步。

密码和密钥

sftp.json 是明文,提交到 Git 等于把服务器密码公开。把它写进 .gitignore,团队共用时用环境变量或 privateKeyPath 指定密钥。服务器只开密码登录的,考虑换成密钥,关掉 FTP 的匿名访问。

传上去没生效

先看远端文件时间戳变没变,再看是否有 CDN 或 OPcache 缓存。PHP 站点可以重启 php-fpm 清 OPcache。文件名大小写也要注意,本地 Windows 不区分,Linux 区分,改个大小写就 404。

临时传文件可以,长期项目还是上 Git 加自动部署,FTP 没有版本可回退。