WebStorm 远程运行 Node.js 程序需手动配置 SSH、绝对路径解释器及环境变量,否则因 non-interactive shell 不加载 profile 导致 command not found;SSH Host 必须与 ~/.ssh/config 完全一致,私钥权限需为 600,node 路径须用 which node 获取的绝对路径,npm 缺失需通过 wrapper 脚本或手动补全 PATH 解决。

SSH 配置必须和 ~/.ssh/config 完全一致
WebStorm 不解析 SSH 别名的模糊匹配,Host 字段填错一个字母或大小写不一致,连接就会静默失败。
- 先在终端执行
ssh user@host -p port,确认免密登录成功;失败就别进 WebStorm,先修 SSH - 如果
~/.ssh/config里写的是Host myserver,WebStorm 的 SSH Configuration 下拉框里就必须选myserver,不能填my-server或 IP - 私钥路径必须是绝对路径(如
/Users/you/.ssh/id_rsa),且权限为600;WebStorm 不报权限错误,只显示“Connection refused”或空白日志 - 密码登录需确认远程
/etc/ssh/sshd_config中PasswordAuthentication yes已启用,且未被fail2ban封禁
Node interpreter path 必须填绝对路径,不支持 ~ 展开
WebStorm 不会执行 source ~/.bashrc,也不查 $PATH,它只认你手敲进去的完整路径。哪怕 which node 输出带 ~,也得手动展开。
- 登录服务器后运行
which node,例如输出/home/deploy/.nvm/versions/node/v18.18.2/bin/node,就原样粘贴进 WebStorm 的Node interpreter path栏 - 填
~/.nvm/versions/...一定失败;nodejs命令在某些 Docker 镜像里才是主命令,此时要填/usr/bin/nodejs - 填完后点
Test Connection,它会尝试执行node -v—— 如果返回空或报错,说明路径不对或 node 本身不可执行
npm / npx 找不到?本质是 non-interactive shell 没加载 profile
WebStorm 通过 SSH 启动的 shell 是 non-interactive 的,不会自动 source ~/.bashrc 或 ~/.zshrc,所以 nvm 设置、PATH 注入全失效。
- 最直接的补救:在 Run Configuration → Environment variables 里手动设
PATH,例如:PATH=/home/deploy/.nvm/versions/node/v18.18.2/bin:/usr/local/bin:/usr/bin:/bin - 更可靠的做法:在服务器上建 wrapper 脚本,比如
/home/deploy/bin/npm-wrapper,内容为:#!/bin/bash source ~/.bashrc exec npm "$@"
,然后在 WebStorm 的 Run Configuration → Node parameters 里把npm替成/home/deploy/bin/npm-wrapper - 如果用
npm run dev启动,确保该 script 在package.json中调用的是绝对路径的node或已封装好的命令
调试远程 Node.js 进程要用 Attach 模式,不是普通 Run
想断点调试正在运行的服务(比如用 nodemon 监听文件变化),不能用常规 Node.js 运行配置,得走 Attach to Node.js/Chrome。
- 启动服务时加
--inspect=0.0.0.0:9229(注意是0.0.0.0,不是127.0.0.1),否则 WebStorm 连不上 - 远程服务器防火墙要放行
9229端口,或改用 SSH 隧道:ssh -L 9229:localhost:9229 user@host - WebStorm 中新建
Attach to Node.js/Chrome配置,Host 填localhost,Port 填9229,再填对Local files' remote URL(例如项目根目录映射为/usr/src/app) - 勾选
Auto-reconnect,这样 nodemon 重启进程后,WebStorm 会自动重连调试器


















