LoginSignup
7
3

More than 3 years have passed since last update.

Raspberry Pi上のNode-REDにパスワードを設定するスクリプト

Last updated at Posted at 2019-10-02

Raspberry PiにおけるNode-REDで、セキュリティ設定を実施する

Raspberry PiにおけるNode-REDの活用について記載したように、 RaspbianでNode-REDを動作させるとpiユーザで実行されるため、Flow Editorからexecノードを使われてしまうと管理者権限でRaspberry Piの全操作が可能になってしまいます。

まったくインターネットからアクセスできないRaspberry Piでも、最低でもログイン画面設定は実施する必要がありますが、settings.jsの編集が必要なため、初心者には難しいという話がありました。

そこで、settings.jsを編集しパスワードを設定する「nrpiadminpass.sh」というスクリプトを作成しました。
nrpiadminpass.sh
https://gist.github.com/utaani/2243b7501a2cde52d93cb85c91f173e8

このスクリプトを使うことで、settings.jsをエディタで編集しなくてもFlowEditorのセキュリティ設定ができます。

スクリプト導入方法

wget https://gist.githubusercontent.com/utaani/2243b7501a2cde52d93cb85c91f173e8/raw/94b8c72c8a358670e0eb389b30de58993adbe6f8/nrpiadminpass.sh

なお、URLが長いので、githubで提供されている短縮URLサービスを使って https://git.io/nrpiadminpass.sh という短縮URLを作りましたので、

wget https://git.io/nrpiadminpass.sh

でも導入可能です。

スクリプト実行方法

bashスクリプトですので、

bash nrpiadminpass.sh パスワード文字列

で実行可能です。

直接 /home/pi/.node-red/settings.js を編集しますので、Node-REDを一度も起動していないRaspberry Piで実行するとエラーになります。その場合は、一度 node-red-startで起動した後、実行してください。

また、すでに手動でsettings.jsを編集された場合にはエラーになり動作しませんので、その場合は

    //adminAuth: {
    //    type: "credentials",
    //    users: [{
    //        username: "admin",
    //        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
    //        permissions: "*"
    //    }]
    //},

のように、元の形式に編集しなおしてから実行してください。

実行後は、以下のようにadminAuthの行のみコメントが外され、bcryptされたパスワードが設定されます。

    // Securing Node-RED
    // -----------------
    // To password protect the Node-RED editor and admin API, the following
    // property can be used. See http://nodered.org/docs/security.html for details.
adminAuth: { type:"credentials", users: [{ username: "admin", password: "$2a$10$MQFIBU4L6ZhkznKMt2Dh6ucb1xQwLqjPUOB5ZrwwUOgU2ttkuzAlq", permissions: "*" }] },
    //    type: "credentials",
    //    users: [{
    //        username: "admin",
    //        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
    //        permissions: "*"
    //    }]
    //},

ファイル編集しただけでは、実行中のNode-REDには影響しませんので、node-red-restartコマンドでNode-REDを再起動してください。FlowEditorにログインしている場合は、ブラウザをリロードする必要があります。

image.png

このように認証ダイアログが表示されたら設定完了です。なお、このスクリプトでは、ユーザ名はadminに固定されますので、パスワードにスクリプトで指定したパスワード文字列を入力してログインできます。

パスワードを変更したい場合は、もう一度

bash nrpiadminpass.sh 新しいパスワード文字列

で変更できます。設定時と同様にnode-red-restartコマンドでNode-REDを再起動する必要があります。さらに、FlowEditorにログインしている場合は、右上のメニューより一度ログアウトする必要があります。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3