WebStorm连不上远程SSH,90%因本地终端都无法连通;须先在终端执行ssh user@host -p port验证认证,再确保私钥权限600、Host别名严格匹配、node路径为which node输出的绝对路径,并通过wrapper脚本或手动补全PATH解决non-interactive shell环境变量缺失问题。

WebStorm 连不上远程服务器 SSH,90% 是本地终端都连不通,别急着填配置界面。 它不报错、不提示权限问题,只在后台静默失败。先验证 SSH 本身是否真可用,再动 WebStorm。
SSH 配置必须先在终端手动验证
WebStorm 的 SSH 配置界面哪怕显示“Test Connection successful”,也可能只是连上了 TCP 层,没真正完成用户认证。最可靠的做法是:打开本地终端,执行 ssh user@host -p port。
- 如果提示输入密码,说明远程
/etc/ssh/sshd_config中PasswordAuthentication yes必须启用,且确认没被fail2ban封禁 - 如果报
Permission denied (publickey),检查私钥路径是否为绝对路径(如/home/user/.ssh/id_rsa),并运行chmod 600 /path/to/private_key - 如果用了
~/.ssh/config别名(如Host myserver),WebStorm 的 Host 字段必须**严格一致**(区分大小写),不能填 IP 或域名
Node.js 解释器路径必须用 which node 的输出结果
WebStorm 不查 $PATH,不 fallback,不展开 ~,只认你粘贴进去的完整绝对路径。填错等于没设解释器。
- 登录服务器后,务必运行
which node,把输出原样复制(例如/home/deploy/.nvm/versions/node/v18.18.2/bin/node) - 如果用
nvm,别填~/.nvm/versions/...——~在 WebStorm 中不解析,必须写成/home/user/.nvm/... - 某些 Docker 镜像或 Alpine 系统只有
nodejs命令,此时要填/usr/bin/nodejs;先在服务器上跑node -v和nodejs -v都试试
npm 找不到?本质是 non-interactive shell 没加载环境
WebStorm 通过 SSH 启动的是 non-interactive shell,不会自动 source ~/.bashrc 或 ~/.zshrc,所以 nvm 设置的 PATH、alias、甚至 npm 本体都不可见。
- 最直接的补救:在 Run Configuration → Environment variables 里手动补全
PATH,比如PATH=/home/user/.nvm/versions/node/v18.18.2/bin:/usr/local/bin:/usr/bin:/bin - 更可靠的做法:在服务器上建 wrapper 脚本(如
/home/user/bin/npm-wrapper),内容为:#!/bin/bash source ~/.bashrc && exec npm "$@"
,然后在 WebStorm 的 Node.js 配置中,把npm package manager路径指向这个脚本
容易被忽略的是:SSH 配置成功 ≠ 远程解释器可用 ≠ npm 可执行。三者层层依赖,但 WebStorm 往往只在最后一步报错,前面两个环节已经悄悄失效了。


















