remote-ssh下node.js项目跑不起来,主因是跨系统、跨用户、跨执行环境的三重权限语义不一致:powershell执行策略锁死脚本、wsl在/mnt/c路径忽略chmod、.vscode-server被root占用,需分别运行set-executionpolicy remotesigned -scope currentuser、配置wsl.conf启用metadata并重启wsl、sudo chown -r $user:$user ~/.vscode-server后重连。

Remote-SSH 下 Node.js 项目跑不起来,不是 npm 没装对,也不是 package.json 写错了,八成是权限链断在了执行环节——尤其是 npm start、./deploy.sh 或调试时 launch.json 的 program 指向脚本这类场景。
PowerShell 执行策略锁死 npm 脚本(Windows 客户端)
VSCode 终端报 Execution Policy 错误、cannot be loaded because running scripts is disabled,说明 PowerShell 拒绝执行任何 shell 封装脚本(包括 npm 自带的 npm.cmd 和 node_modules/.bin 下的 wrapper)。这不是文件系统权限问题,而是 Windows 安全策略拦截。
-
get-ExecutionPolicy返回Restricted就坐实了问题 - 运行
set-ExecutionPolicy RemoteSigned -Scope CurrentUser(无需管理员权限) - 必须重启 VSCode 终端(关掉再开,
Reload Window不生效) - 别用管理员启动 VSCode 绕过——这会让
npm和node进程 UID 错位,后续可能触发.vscode-server权限冲突
WSL 客户端下 chmod +x 失效(/mnt/c 路径)
你在 /mnt/c/project/start.sh 上执行 chmod +x,ls -l 看着有 x 位,但 ./start.sh 仍报 Permission denied——DrivFS 默认忽略 chmod,改的只是内存映射,不持久。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 编辑
/etc/wsl.conf,确保含metadata选项:[automount] enabled = true options = "metadata,uid=1000,gid=1000,umask=022"
-
uid/gid必须和id -u/id -g输出一致 - 改完必须执行
wsl --shutdown,再重启 WSL(仅exit或关闭终端无效) - 验证:
ls -l /mnt/c/project/start.sh应显示真实-rwxr-xr-x,且能直接执行
Remote-SSH 中 .vscode-server 归属为 root 导致代理进程无权执行
连接后 npm run dev 成功,但 F5 调试失败、或 vscode-remote-lock 报错、或 ~/.vscode-server/bin/xxx: Permission denied——说明 VSCode Server 启动的子进程以错误 UID 运行,无法访问自己生成的二进制。
- 登录服务器,运行
ls -ld ~/.vscode-server - 若 owner 是
root,立即修复:sudo chown -R $USER:$USER ~/.vscode-server - 不要
rm -rf ~/.vscode-server——VSCode 会重新下载,但若目录仍归 root,问题复现 - 修复后需重启 Remote-SSH 连接(断开再重连),让新进程以当前用户身份重建环境
launch.json 的 program 字段指向 shell 脚本引发权限链断裂
调试时断点灰掉、控制台无输出,launch.json 里 "program": "./start.sh" 看似合理,实则踩坑:VSCode 调试器不走 shell 执行位校验,但底层启动流程会被 PowerShell 策略或 WSL 权限模型截断。
-
program必须指向 JS/TS 文件,例如"${workspaceFolder}/src/server.js" - 若必须用脚本启动,把逻辑移到
preLaunchTask或npm script中,调试器只负责 attach 到已启动的进程 - 避免
program指向/mnt/c/...下的脚本——即使权限修复,WSL 的 shebang 解析也可能失效
真正卡住的从来不是单个 chmod 命令,而是跨系统(Windows ↔ WSL)、跨用户(root ↔ $USER)、跨执行环境(PowerShell ↔ bash)三重权限语义不一致。修一个地方,得同步确认另外两处是否对齐。










