注目トピック

Wikiガイド

最近の更新

2022-12-28
2021-10-12
2018-08-20
2013-10-30
2013-02-06
2011-06-22
2010-08-13
2009-03-27
2008-11-14
2008-11-13
2008-10-01

EXPRESSSCOPEエンジンを使う

[番外編] ipmitoolでのパスワード指定方法を考える

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に安全性の違いはありません。どの認証方法を使うかは環境に応じて適宜判断してください。


関連記事