Host填服务器可直连IP或域名,User name填SSH登录用户名(如root),Root Path填项目实际运行路径(如/var/www/html),三者错误将导致Test Connection失败且上传后404。

怎么填Connection里的Host、User name和Root Path
填错这三个字段,Test Connection就永远过不去。Host必须是服务器可直连的IP或域名(不能写localhost或内网地址),User name是SSH登录用户名(不是控制台账号名,比如阿里云ECS的默认用户通常是root或ubuntu),不是你在云厂商控制台注册的邮箱账号。
Root Path不是随便选个空文件夹——它得是你项目实际运行的路径,比如部署到Tomcat就填/opt/tomcat/webapps/your-app,部署到Nginx静态服务就填/var/www/html。填错会导致上传后访问404,但WebStorm不会报错,只会“静默成功”。
- 端口默认是
22,改过SSH端口的必须手动输,别依赖默认值 - Authentication type选
Password还是Key pair (OpenSSH),取决于你服务器是否禁用了密码登录;用密钥更安全,但私钥路径必须正确指向id_rsa(不是id_rsa.pub) - 点击
Test Connection前,确保本地能ssh user@host -p port通——这是最可靠的前置验证
Mappings里Local path和Deployment path怎么配才不丢文件
这两个路径决定“本地哪个文件夹 → 传到服务器哪个位置”,不是“映射关系”,而是“源→目标”的单向搬运。Local path通常就是项目根目录(./),Deployment path必须是Root Path的子路径,且以/开头(比如Root Path是/var/www,Deployment path就该填/my-project,不是my-project)。
常见错误是Deployment path少写了/,结果文件全被传到服务器根目录下,或者覆盖了系统关键文件。
- 如果项目要部署为子路径(比如
http://example.com/admin),Deployment path必须和Web Server URL末尾一致,即填/admin - 多个模块要分路径部署?点
Add another mapping,单独配src/api→/api这类细粒度规则 - 不想传
node_modules或.git?切到Excluded paths标签,加/node_modules、/.git(注意斜杠方向)
自动上传选“Always”还是“On explicit save action”
选Always看似省事,但会把未保存的草稿、临时文件(比如编辑中还没Ctrl+S的JS文件)也推上去,导致服务器跑着半截代码。而On explicit save action只在你按下Ctrl+S(或Cmd+S)时触发,更可控。
真正要注意的是:自动上传不等于自动同步。它只上传本地变更,不会拉取服务器上其他人改的文件。如果你团队共用同一台测试机,又开了自动上传,很容易覆盖别人刚部署的配置。
- 开发阶段建议先关掉自动上传,用右键
Upload to XXX手动推整目录 - 上线前务必确认
Upload changed files automatically to the default server已勾选,且默认服务器已设为你要发版的那个 - 上传失败时,看右下角状态栏提示,而不是弹窗——WebStorm常把
Permission denied藏在角落,不是弹出报错框
为什么“Browse Remote Host”打不开或显示空白
这不是插件问题,大概率是Root Path权限不对。比如填了/var/www,但当前用户没读取权限,WebStorm就连列表都拉不出来,界面就卡在加载状态。
另一个隐蔽原因是SFTP服务端限制了ls命令或禁用了stat调用(某些精简版OpenSSH或容器化SFTP服务会这样)。这时候即使Test Connection成功,浏览也会失败。
- 先在服务器上执行
sudo -u your_user ls -l /your/root/path,确认用户有读+执行权限(dr-xr-xr-x不行,至少要drwxr-xr-x) - 如果确定权限没问题,试试在Connection里勾选
Passive mode(尤其用Docker SFTP或某些云防火墙策略时) - “Browse Remote Host”窗口打开后,默认不刷新——右键空白处点
Reload才能看到最新文件
Root Path权限、Deployment path开头的/、自动上传时机,这三处最容易反复踩坑。其他设置错了顶多传不上去,这三处错了,可能传上去了却访问不到,或者传到了不该去的地方。


















