node-red如何开启登录验证

Posted by backup@lfo.cc; tagged with none

在默认情况下 node-red 是可以直接访问的,如果服务器暴露在公网上,那就会有未授权访问的风险,这时可以修改 settings.js 来开启 Node-RED 登录功能(使用用户名和密码登录)。


第一步:找到配置文件

首先,确保您知道您的 settings.js 文件在哪里。如果您是按照我们之前的讨论在 /opt/nodered 中安装的,那么文件就在那里:

cd /opt/nodered

第二步:编辑配置文件

使用您喜欢的文本编辑器打开 settings.js 文件:

nano /opt/nodered/settings.js

在文件中,找到 adminAuth 这个部分。它通常是被注释掉的,或者您可能需要自己添加它。

您需要取消注释或添加以下代码块:

// Admin Authentication
//
// You can secure the editor and admin APIs using a username and password
// by setting the adminAuth property.
//
adminAuth: {
    type: "credentials",
    users: [{
        username: "admin",
        password: "$2a$08$9H6J0O1Q0.1Y.N0.T9T8Y.QY.QY.QY.QY.QY.QY.QY.QY", // 请替换成您自己的密码哈希
        permissions: "*"
    }]
},

第三步:生成密码哈希

重要:您不能直接在配置文件中输入明文密码。Node-RED 需要一个密码的哈希值。

Node-RED 提供了生成密码哈希的命令,非常方便。

  1. 在命令行中,进入您的 Node-RED 目录:

    cd /opt/nodered
  2. 运行以下命令来生成哈希,请将 your_password 替换为您想要的密码:

    npx node-red-admin hash-pw

    它会提示您输入密码并确认。完成后,它会输出一个很长的字符串,这就是密码的哈希值。
    例如:

    Enter password:
    Re-enter password:
    $2a$08$9H6J0O1Q0.1Y.N0.T9T8Y.QY.QY.QY.QY.QY.QY.QY.QY
  3. 复制这个完整的哈希字符串(包括最前面的 $2a$...)。

第四步:替换哈希并保存文件

现在,回到您正在编辑的 settings.js 文件中,用您刚刚生成的哈希值替换掉 adminAuth 块中的 password 值。

修改后的部分应该看起来像这样:

adminAuth: {
    type: "credentials",
    users: [{
        username: "admin",
        password: "您的密码哈希值", // 替换为您的哈希
        permissions: "*"
    }]
},

保存文件并退出编辑器。


第五步:重启 Node-RED

最后,重新启动 Node-RED 以使更改生效:

cd /opt/nodered
npx node-red

现在,当您在浏览器中访问 Node-RED 界面时,它会弹出一个登录框,要求您输入用户名和密码。输入您在 settings.js 中设置的 username 和明文密码(不是哈希值),就可以登录了。