2010年7月24日土曜日

ssh で認証無しログインをする方法(公開鍵方式)


このエントリーをはてなブックマークに追加


Hadoopやクラスタを組む場合、必須になるのでどういった流れで設定するかメモっておく。




Hadoop (1) スタンドアロン

Hadoop (2) 疑似分散モード

Solaris10 zone 設定



参考にしたページ


■環境(SolarisのZoneを利用)
root@sol10-u24 16:53:40>zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              native   shared
  16 hdp01            running    /spool/zone/hdp01              native   shared
  17 hdp03            running    /spool/zone/hdp03              native   shared
  18 hdp04            running    /spool/zone/hdp04              native   shared
  19 hdp05            running    /spool/zone/hdp05              native   shared
  20 hdp02            running    /spool/zone/hdp02              native   shared

このhdp01-05の間で相互にパス無し認証を行うようにする。
* Linuxも手順は一緒。


各仮想ホストのユーザにはhadoopを使う。

(1)キーの作成
各ホストにhadoopユーザでログインし、公開&秘密鍵を作成する。
(この場合は、全てhdp01からssh経由で実行している)

*最初のうちはパスワードを聞かれます。

hadoop@hdp01 16:54:55> ssh hdp01 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp02 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp03 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp04 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp05 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

権限の設定
hadoop@hdp01 16:54:55> ssh hdp01 chmod 700 ~/.ssh
hadoop@hdp01 16:54:55> ssh hdp01 chmod 600 ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp02 chmod 700 ~/.ssh
hadoop@hdp01 16:54:55> ssh hdp02 chmod 600 ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp03 chmod 700 ~/.ssh
hadoop@hdp01 16:54:55> ssh hdp03 chmod 600 ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp04 chmod 700 ~/.ssh
hadoop@hdp01 16:54:55> ssh hdp04 chmod 600 ~/.ssh/id_dsa
hadoop@hdp01 16:54:55> ssh hdp05 chmod 700 ~/.ssh
hadoop@hdp01 16:54:55> ssh hdp05 chmod 600 ~/.ssh/id_dsa

(2)各ホストのauthorized_keysに自分の公開鍵を登録する。

まず初めに、hdp01から全てのホストへパス無しログインができるようにしてみる。

キーを配布(自分自身にも)
hadoop@hdp01 17:03:40> scp ~/.ssh/id_dsa.pub hdp01:/tmp/hdp01.pub
hadoop@hdp01 17:08:12> scp ~/.ssh/id_dsa.pub hdp02:/tmp/hdp02.pub
hadoop@hdp01 17:08:23> scp ~/.ssh/id_dsa.pub hdp03:/tmp/hdp03.pub
hadoop@hdp01 17:08:30> scp ~/.ssh/id_dsa.pub hdp04:/tmp/hdp04.pub
hadoop@hdp01 17:08:36> scp ~/.ssh/id_dsa.pub hdp05:/tmp/hdp05.pub

各ホストでキーをauthorized_keysに登録
hadoop@hdp01 17:10:37> ssh hdp01 "cat /tmp/hdp01.pub >> ~/.ssh/authorized_keys"
hadoop@hdp01 17:11:46> ssh hdp02 "cat /tmp/hdp01.pub >> ~/.ssh/authorized_keys"
hadoop@hdp01 17:12:21> ssh hdp03 "cat /tmp/hdp01.pub >> ~/.ssh/authorized_keys"
hadoop@hdp01 17:12:32> ssh hdp04 "cat /tmp/hdp01.pub >> ~/.ssh/authorized_keys"
hadoop@hdp01 17:12:37> ssh hdp05 "cat /tmp/hdp01.pub >> ~/.ssh/authorized_keys"

*これ以降、hdp01 → hdp* へのアクセスは認証無しになる。

hadoop@hdp01 17:19:00> ssh hdp01 chmod 600 ~/.ssh/authorized_keys
hadoop@hdp01 17:19:14> ssh hdp02 chmod 600 ~/.ssh/authorized_keys
hadoop@hdp01 17:19:17> ssh hdp03 chmod 600 ~/.ssh/authorized_keys
hadoop@hdp01 17:19:20> ssh hdp04 chmod 600 ~/.ssh/authorized_keys
hadoop@hdp01 17:19:24> ssh hdp05 chmod 600 ~/.ssh/authorized_keys

一つ認証無しにできると後は楽。




0 件のコメント:

コメントを投稿