by morihide
これまで基本編2や応用編1でipmitoolコマンドの使い方を紹介してきましたが、実際のところ-Pオプションに直接パスワードを指定するのは考え物です。コマンド履歴にパスワードが残ってしまいますし、(同じマシンにログインしている)ほかのユーザーにwコマンドを使われれば、それだけでパスワードが漏れてしまいます。
対処法はいくつかあります。まず、-Pオプションの使用をやめること。そうすると、パスワード確認用のプロンプトが出てくるようになります(以下参照)。
$ ipmitool -l lanplus -H XXX.XXX.XXX.XXX -U ユーザー名 chassis power status Password: ←パスワードを入力 Chassis Power is on $
入力したパスワードはエコーバックされないので、端末画面をスクロールバックしてもパスワードは出てきません。
その都度パスワードを入力するのが面倒だという人は、パスワードファイルを利用するとよいでしょう。以下の要領でパスワードファイルを作成し、他のユーザーが読み出せないよう、パーミッションを「400」に変更します。
$ echo "パスワード" > ~/.passfile $ chmod 400 ~/.passfile
あとは、このファイルをipmitoolコマンドの-fオプションに指定すればOKです。
$ ipmitool -l lanplus -H XXX.XXX.XXX.XXX -U ユーザー名 -f ~/.passfile サブコマンド……
このほか、-Eオプションを利用するという手もあります。これは、環境変数のIPMI_PASSWORDに格納しておいたパスワードを参照するためのオプションです。
まず、環境変数にパスワードをセットし(これはbashを使用している場合の例)、
$ export IPMI_PASSWORD="パスワード"
ipmitoolコマンドで-Eオプションを指定します。
$ ipmitool -l lanplus -H XXX.XXX.XXX.XXX -U ユーザー名 -E サブコマンド……
ログインするたびにIPMI_PASSWORDをセットするのが面倒なら、あらかじめ前述の方法でパスワードファイルを作成しておき、シェルの初期化ファイルにパスワードファイルの内容をIPMI_PASSWORDにセットする、といった処理を書いておくとよいでしょう。たとえば、bashであれば、~/.bashrcに以下の行を追加しておきます。
export IPMI_PASSWORD=`cat ~/.passfile`
なお、この場合は.bashrcのパーミッションを「600」に変更しておいたほうが安全です(初期状態では大抵、「644」になってます)。
-fオプションの場合、コマンドラインを見られると“どこに”パスワードが書かれているのかを知られてしまいますが、-Eオプションなら直接知られることはありません。そのため、-fよりも-Eのほうがちょっとだけ安全と言えるでしょう。もっとも、自分専用のデスクトップマシンからipmitoolを実行するのであれば、-fと-Eに安全性の違いはありません。どの認証方法を使うかは環境に応じて適宜判断してください。