Oracle新人のRACインストール その7

<Oracle新人のRACインストール その7>
ペンネーム: “world-cup” famous beagle

今回は、SSHについて。

「印旛くん、まだインストールできないの?」
「あ、今からSSHの設定をやるところです。
そろそろ事前準備が終わると思うんですけど・・・」
「ふーん、早くやって。どうせSSHが何かわかんないんでしょ?」
「あ、はい。マニュアルには鍵の構成とかって書いてありました」
「マニュアル通りにやればできるから、とりあえずやってみて。
やればなんとなくわかるから、その後調べて確認して」
「はい、わかりました」

—–SSHの構成手順—–

SSHを構成するには、各ノードで次の手順を実行する必要があります。
(今回は、node1,node2の2ノードの場合)

「SSHが何かはよくわからないけど、とにかくやってみよう」

1.Oracleユーザのホームディレクトリ(/home/oracle)へ移動
$ cd $HOME(/home/oracle)

2.鍵を格納するディレクトリを作成し、権限を変更する
$ mkdir .ssh
$ chmod 700 .ssh


「権限が"700"ってことは、どういうことだっけな?見てみよう」
$ ls -ald .ssh
drwx------   2 oracle oinstall      ****  *月 ** **:** .ssh

「oracleユーザだけに読み書き実行権限があるのか・・・。
かといってどういうことなのかはわかんないな」

3.2で作成したディレクトリに移動する
$ cd .ssh

4.RSA鍵を作成する
$ ssh-keygen -t rsa

ここで、鍵ファイルのデフォルトの場所を受け入れます。
パスフレーズを入力する。

5.DSA鍵を作成する
$ ssh-keygen -t dsa

ここで、鍵ファイルのデフォルトの場所を受け入れます。
パスフレーズを入力する。

→.sshディレクトリ内に以下の鍵が作成される。
$ ls
id_dsa   	id_rsa
id_dsa.pub  id_rsa.pub

→両ノードで鍵を作成します

「RSAとDSAっていう鍵があるのか。
鍵っていっても何に使うのかよくわかんないな。中身を見てみよう」

$ view id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C13EC3F82A1D71A4

E36kiQR5uqEV6VeeS7wCdD7Ky23joamjrbf6B+ZXNeNz6J9iLdqlCCFPDGfRH30A
dDaO5AL4bJC9mpHqgRNX/aP/gzWIPUL7mXuhoLp4gWz/6OP/4c18DVDfVc34hLYg
Aq0nZhfZ9A2sFIT5GcDPsqmNN4AEaXullQ2R6Yj89MFE3J4+fnD9BsKLf7V47T0u

----------中略---------------

—–END RSA PRIVATE KEY—–

「全く読めない。ダビンチコードかな?
富樫さん、RSA鍵っていうのの中身を見てるんですけど、全く読めなくて」
「あぁ、SSHのことかな?それは読めなくていいんだよ、暗号だから」
「あ、じゃあやっぱりダビンチコードですか?」
「ダビンチコードじゃないけど、コンピュータだけがわかる暗号だね」
「なんで暗号にしてるんですか?
誰に読まれたくないのか、よくわかんないんですけど?」
「それは、困ったね。SSHは、SecureShellの略なんだけど、
誰に読まれたくない、っていうよりは、より安全に通信しましょう、
って感じかな。普段印旛くんが使ってるTelnetは、ログインの情報とかはその
ままの文で流れてるんだよね。そうすると、誰でも読めちゃうから、
それを読めないように暗号化してるんだよ」
「あー、なるほど」

6.node1,node2のパブリックキーから、authorized_keysを作成する
$ ssh node1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
$ ssh node1 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
$ ssh node2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
$ ssh node2 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys

「あ、これはなんかわかる気がする。RACがインターコネクトを介して相互に
情報をやりとりするためかな?お互いの鍵の情報を持ってないとだめだもんね」

7.authorized_keysの権限を変更する
$ chmod 600 authorized_keys

8.node1で作った、authorized_keysをnode2にコピーする
$ scp authorized_keys node2:/home/oracle/.ssh/

「やっぱりそうだ。authorized_keysっていう1つの鍵をRACを構成するノード
に配ることで、相互に通信ができるようになるんだ」

9.node2でauthorized_keysの権限を変更する
$ chmod 600 authorized_keys

「よし、富樫さん鍵の交換ができたのでこれでSSHができるようになりました
よね?」
「確認してみなよ。
“ssh date”でパスワードが聞かれなければOKだよ」
「はい」

$ ssh  date
password:

「あれ?パスワードを聞かれちゃった」
「それじゃ駄目だね。なんか手順をぬかしてない?」
「うーんと・・・。
あ、次にユーザ等価関係の有効化っていうのがありますけど」
「うん、それだね」

10.ユーザ等価関係の有効化
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add

RSA Keyのパスワードを入力します

「よし。これでできるかな。あせらずに最後の手順まで見てみよう」

11.次のコマンドを実行し、SSHが正しく動作するかを確認する

$ ssh  date

注意: 特定のシステムからのノードの接続に初めてSSHを使用した場合、
次のようなメッセージが表示されることがあります。
The authenticity of host ‘node1 (140.87.152.153)’ can’t be
established.
RSA key fingerprint is
7z:ez:e7:f6:f4:f2:4f:8f:9z:79:85:62:20:90:92:z9.
Are you sure you want to continue connecting (yes/no)?
プロンプトでyes を入力して、次に進みます。再度、このシステムからこのノー
ドに接続したときには、このメッセージは表示されなくなります。
(参照:Oracle Database Oracle Clusterware および Oracle Real Application
Clusters インストレーション・ガイド 10g リリース2(10.2)for Linux)

「よし。富樫さん、できたみたいです」
「よかったね。じゃあ、岸田さんにつっこまれる前に少しSSHを勉強しといた
ほうがいいんじゃない?」
「そうですね。ありがとうございます」

「じゃあ、早速調べてみよう。そもそも、SSHが何か調べなきゃ」

—–SSHとは—–
■暗号化されているリモートシェル
■通信を暗号化することで、情報を外部に漏らさず安全に通信できる

「うん。この辺は、富樫さんに教えてもらったな。
よくわからないのは、どういうメカニズムで暗号化したり、復号してるかな?」

SSHは、公開鍵と秘密鍵とパスフレーズの組合せを使います。
“.pub”がついているほうが、公開鍵です。ついていないほうが、秘密鍵です。
手順の中にもあったように、常に公開鍵と秘密鍵が一対で生成されます。

SSHで通信するためには・・・
1.秘密鍵をローカルホストの$HOME/.ssh/id_rsaに置く。
2.公開鍵をリモートホストの$HOME/.ssh/authorized_keysに追加する。
3.事前にパスフレーズを入力し秘密鍵を復号したものを、ssh-agentに記憶
させる。

SSHは、公開鍵を使ってデータを暗号化し、秘密鍵を使ってデータを元に戻し
ます。RACの場合は、各ノードで秘密鍵と公開鍵を作り、公開鍵を集めて、全
てのノードで持っていれば、SSHで通信することが可能になります。

「なるほど。だから、authorized_keysの中に、公開鍵を集めて各ノードに配
るのか。こんな流れでRACは、データのやりとりをするのかな・・・

1.node1のauthorized_keysでデータを暗号化する
2.暗号化したデータをnode2に送信する
3.node2は、秘密鍵を使ってデータを複合する

こうすることで、RACの場合は、もしインスタンスの数が増えていっても、お
互いにSSHでやりとりができるようになるんだな。
あと、わからなかったのは、”ユーザ関係の有効化”だけど、これは、ssh-agent
っていうエージェントに鍵を覚えさせておくことで、パスワードを何度も入力
する必要がなくなるってことか。よーし、わかった!」

「よし、設定がきっちりできたところで、もう一度、確認してみよう」

$ ssh  date
Mon Jun 12 19:42:09 JST 2006

「岸田さん、できました!SSHもちゃんと設定できてます」
「いちいち報告しなくていいから、早くインストールして」
「はい・・・」

ワールドカップが始まりました。
寝不足はやむをえないでしょう。
これを機に、あまり寝なくても仕事に対応できる、
体力づくりをしようかと考えています。