hadoopクラスタを設定する場合、sshでパスワードを入力しないですむように設定をしてやる必要がある。
個人的に確認するぐらいならパスワード空文字でもいいんだけど、仕事で使う場合はさすがにそれはまずいだろ、
ということでssh-agentの設定方法を確認した。
- 作者: Daniel J. Barrett,Richard E. Silverman,Robert G. Byrnes,小島肇,坂井順行,鹿田幸治,園田道夫,高橋基信,根津研介,宮本久仁男
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/22
- メディア: 大型本
- 購入: 2人 クリック: 64回
- この商品を含むブログ (47件) を見る
この本が無茶苦茶くわしいので、これを参考にする。
事前準備
Solaris10がDHCP接続するときに、ホスト名をもらってくれていないので、その設定を行う。
/etc/default/dhcpagent
REQUEST_HOSTNAME=yes
/etc/hostname.インタフェース名
inet hogehoge
ここまでやってみたけど、hostnameがunknownのままで、解決しなかった。。
unknownは萎えるので、/etc/nodenameにホスト名を記入した。
/etc/nodename
hogehoge
鍵をリモートホストへコピー
普通にコピーしてもいいんだけど、ssh-copy-idコマンドを使おうとしてみた。
ちなみに、上記「実用SSH」によると、注意点があるらしいので本で内容を確認して、自分はそのケースに該当しないので、そのまま実行。
% ssh-copy-id -i id_rsa user@remotehost
楽チンなコマンドだなーと思っていたら、Solaris10には用意されていなかった。
しょうがないので、手動でリモートサーバにコピーして、~/.ssh/authorized_keysの末尾に追加する。
scp id_rsa.pub usr@remotehost:
(remotehostでaurhorized_keysの末尾が改行されているのを確認した後。)
cat id_rsa.pub >> ~/.ssh/authorized_keys
↑これだと末尾に改行が入らないので、今後、鍵を追加するときのために、最後に改行を手動で追加しておいた。
ここまでで、リモートユーザのOSパスワードではなく、ローカルの秘密鍵へのパスフレーズでリモートログインが可能になった。(リモートユーザのOSパスワードがネットワークを流れない。)
ssh-agentの動作確認
まずはssh-agentが動作するかどうかだけを確認。
% ssh-agent $SHELL % ssh-add
エージェントを起動し、秘密鍵をエージェントに持たせる。
この状態で、リモートホストに接続するとパスフレーズを入力しなくてもよい。
% ssh user@remotehost
ssh-agentの自動起動
ここまででssh-agentを使えば、リモートホストにパスワードなしでログインできる状態を実現することが可能なのは確認できた。
後は、ssh-agentをユーザのログイン時などに自動で起動して鍵をエージェントに持たせるようにしておけば、Hadoopが管理作業でリモートホストにログインするときでもパスワードなしで、すべての処理を行ってくれるようになる。(このエントリの目的はここ。)
と、意気込んでみたが、この後「実用SSH」の本の通りに設定しても、ログイン時の起動スクリプトがうまく動作しなかった。
とりあえず、今日はここであきらめる。さしあたってHadoopを使うときは、空のパスフレーズを使用することに。。。(冒頭の意見と間逆の結論。)