'''[FrontPage NEC iモデル Wiki トップ]'''
== EXPRESSSCOPEを使う
= ![番外編] ipmitoolでのパスワード指定方法を考える
by [user:morihide morihide]
これまで[ExpressScopeHowTo_2p1 基本編2]や[ExpressScopeHowTo_3p1 応用編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に安全性の違いはありません。どの認証方法を使うかは環境に応じて適宜判断してください。
----
==== 関連記事
* [ExpressScopeHowTo_1p1 基本編1:リモートからのOSインストール]
* [ExpressScopeHowTo_2p1 基本編2:コマンドラインからの電源制御]
* [ExpressScopeHowTo_3p1 応用編1:Serial over LANを設定する]
'''[FrontPage NEC iモデル Wiki トップ]'''