20
7

symbol-nodeで node passwordが通らなくなった

Last updated at Posted at 2024-01-24

どんな状況で発生したか

事件は 手持ちの サーバの1基で発生しました

symbol-bootstrapの命令を実行した時に
見慣れない表示が出るのに気付きました
image.png

(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

上記の表示ですね
これ 後で知ったんですが nodejsの ver.21で symbol-bootstrapを使うと出て来ます

事件当時 この表示をどうにか出ない様にしたくて

sudo npm install -g symbol-bootstrap

② nodejsの downgrade
を行った直後から

symbol-bootstrapの
config --upgrade
start --upgrade
decrypt
等 node passwordを求められる命令で
image.png
passwordが通らなくなりました

target/addresses.ymlの中の秘密鍵は通常 暗号化されていますが
この暗号化された秘密鍵の復号の為の passwordが通らない状態ですね

nodeを建てた直後に symbol-decrypt命令で復号した addresses.ymlを保存していたので
passwordが通らなくなった target/addresses.ymlを 復号したものと入れ替えた後
symbol-bootstrap start --upgradeを実行して 事無きを得ました

symbol-bootstrapの再インストールと nodejsの downgradeを行った タイミングで発生した様です

まだどちらかが直接の原因かははっきりしていません

なのでまず nodeを新しく作った時は 必ず addresses.ymlの復号した fileを
保存する事を推奨します

addresses.ymlの復号方法

symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml

命令の最後のd_addresses.ymlは 好きな file名で構いません
自分の場合は adddaとか適当な名前で保存しています
ケースによっては 復号が出来ない場合もあるかも知れません
その時の為に 何度も言いますが

まず nodeを建てた時には 必ず addresses.ymlの復号を行ったものを保存して下さい
これさえあれば nodeを再生出来ますし 再生する時に node passwordは新たに設定出来ます

冒頭の

(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

上記表示は nodejsの ver.21(latest)でのみ出ています

node.jsの downgrade(latestから stableへ)を行う

参考ページ

具体的には

sudo npm install n -g
sudo n stable(最新にしたい時は sudo n latest)
sudo apt purge -y nodejs npm
exec $SHELL -l
node -v

上記の手順で node.jsを ver.21(latest)からver.20(stable)へ downgradeしました
この後では

(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

の表示は出なくなりました

2024.01.28 対処方法が見つかりました

symbol-bootstrapを マニュアルビルドする

gitの インストール

sudo apt install -y git

symbol-bootstrapの公式から ソースコードを ダウンロードする
home ディレクトリで作業した方が良いかもです

cd

git clone https://github.com/fboucquez/symbol-bootstrap

symbol-bootstrap ディレクトリに入り package.jsonを編集する

cd symbol-bootstrap

vi package.json

image.png

赤線の部分は元々 "1.1.10" になっていますが
元の symbol-bootstrapと区別しやすい様に ここを
"1.1.10d"とします
これを保存します

symbol-bootstrap@1.1.10d のインストール

npm install

この時点ではまだ symbol-bootstrap -vで表示される ver.は "1.1.10"のままです
更に コマンドを実行します

npm run build

sudo npm install -g .

これで symbol-bootstrap@1.1.10dの インストールは完了です

symbol-bootstrap -v

image.png

symbol-bootstrapの ver.が "1.1.10d"になっていれば良いです
これで
今まで パスワードが通らなかった addresses.ymlを復号してみましょう

symbol-bootstrap decrypt --source addresses.yml --destination d_addresses.yml

image.png

パスワードが通り 復号された ファイルd_addresses.ymlが出来ています
特に node.jsや symbol-bootstrapの ver.戻しや
osの 再インストールは必要ありませんでした

※2024.01.29追記

記憶違いと 後から事実の相違が見つかった為 本文を手直ししました
時系列で見直すと
この サーバは 元々以前に nodejsを nで 21(latest)に アプデしておいたものです

(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

この表示は nodejs 21(latest)で起こります その他の ver.ではこの表示は出ません

この状態で
nodeを作成したんですが
symbol-bootstrapを使う度に 上述の

(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

の表示がうざかったので
まず sudo npm install -g symbol-bootstrapを実行してみました
それでもこの表示がまだ出ていたので

nを使って 20(stable)に ダウングレードしました
これらの作業の直後から この サーバ上で それまでに作成した nodeの addresses.ymlが全て復号出来なくなりました

これ以降に作成した nodeの addresses.ymlは 復号が出来ましたが
それ以前に作成したものは復号出来なくなったと言う訳です
これらの この サーバで復号出来なくなってしまった addresses.yml
他の 以前から使っている サーバでは復号出来ました

この サーバで変化してしまった後に作成した addresses.yml
最近借りて セットアップした サーバ上では復号出来ました
最近借りて セットアップした サーバ上で作成した addresses.yml
この 変化してしまった サーバで復号出来ました

新規で nodejs12~21の ver.と
ubuntu20/22でそれぞれ セットアップした サーバで試した所
そのどれもが
最近借りて セットアップした サーバこの変化してしまった サーバの方と
互換性がありました

思い付く方法を試した結果
symbol-bootstrapを
sudo npm install -g symbol-bootstrap
では無く
githubからの マニュアルビルド(上記対処方法)で
サーバが変化する以前の状態に戻せた次第です

原因が判明しました

2024.01.30追記
今度は新規で セットアップした サーバを使います
nodejs/osの ver.の検証はここで行っていたんですが
現在は
ubuntu22.04
nodejs v20.11.0
上述の githubから直接 buildしたsymbol-bootstrap@1.1.10d
になっています

この サーバは 最初に セットアップした時は
元の addresses.ymlが復号出来ない状態だったのを
元の addresses.ymlが復号出来る状態に(意図的に)現在は してあります

これを これから
試しに 良く知られている

sudo npm install -g symbol-bootstrap

これを実行します

只の symbol-bootstrap@1.1.10に戻りました
image.png

これで 元の 先程まで復号出来ていたaddresses.ymlの復号を試みましたが
パスワードが通らなくなりました

これとは逆に最近借りて セットアップした サーバaddresses.yml
復号出来る様になりました

つまり結論

直接の原因は
最近行った
sudo npm install -g symbol-bootstrap
これだけです

※ここから又 githubから symbol-bootstrapを直接 buildした所
再び元の状態に戻せています

ちなみにどちらの状態でも
nodeを作った際に復号さえしておけば
特に パスワードが通らなくなっても再生出来ます
ただし暗号化された addresses.ymlは 他の サーバで パスワードが通らない事が起こる可能性を孕みます

これが現在の symbol-bootstrapの状況です
symbol-bootstrapは 最終の updateから だいぶ時間が経っていますので
特に 再インストールする必要が無かった為
以前から建っていた nodeで たまたま最近 symbol-bootstrapの更新を行った場合
nodeの パスワードが通らなくなる事例が発生した

と考えられます

最近 symbol-bootstrapを更新した方は 一度 上記の復号命令を試してみて下さい
もしかしたら あなたのその サーバも なっちゃってるかもよ!?

いつからこうなったかが不明なんです

もし nodeの updateの時に nodeの パスワードが通らなくなった時は
上述の githubからの 直接buildを試してみて下さい

おまけ チキチキお前の サーバはどっち側〜!?

ドンドンパフパフ ドンドンンパフパフ
さあ!自分の サーバが どっち側なのか?試してみよう!ドンドンンパフパフドンドンンパフパフ

えっと適当な ディレクトリを作ってその中でやってみて下さいませ

wget 6.dusanjp.com/decrypt/light

symbol-bootstrap decrypt --source light --destination l

上記の コマンドで無事復号出来た方は 光属性です
あっと パスワードは12345です

では次はこっち

wget 6.dusanjp.com/decrypt/darkness

symbol-bootstrap decrypt --source darkness --destination d

こちらも パスワードは12345ですね
おめでとう御座います!こちらが復号出来たあなたは闇属性ですね
そうです!暗黒の騎士です!

20
7
3

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
20
7