Hadoop環(huán)境搭建注意事項(xiàng)之一SSH配置及原理
SSH設(shè)置
在Hadoop啟動(dòng)以后,Namenode是通過(guò)SSH(Secure Shell)來(lái)啟動(dòng)和停止各個(gè)節(jié)點(diǎn)上的各種守護(hù)進(jìn)程的,這就需要在節(jié)點(diǎn)之間執(zhí)行指令的時(shí)候是不需要輸入密碼的方式,故我們需要配置SSH使用無(wú)密碼公鑰認(rèn)證的方式。
首先要保證每臺(tái)機(jī)器上都裝了SSH服務(wù)器,且都正常啟動(dòng)。實(shí)際中我們用的都是OpenSSH,這是SSH協(xié)議的一個(gè)免費(fèi)開(kāi)源實(shí)現(xiàn)。FC5中默認(rèn)安裝的OpenSSH版本是OpenSSH4.3P2。
以 本文中的三臺(tái)機(jī)器為例,現(xiàn)在dbrg-1是主節(jié)點(diǎn),它需要主動(dòng)發(fā)起SSH連接到dbrg-2和dbrg-3,對(duì)于SSH服務(wù)來(lái)說(shuō),dbrg-1就是SSH 客戶(hù)端,而dbrg-2、dbrg-3則是SSH服務(wù)端,因此在dbrg-2,dbrg-3上需要確定sshd服務(wù)已經(jīng)啟動(dòng)。簡(jiǎn)單的說(shuō),在dbrg-1上 需要生成一個(gè)密鑰對(duì),即一個(gè)私鑰,一個(gè)公鑰。將公鑰拷貝到dbrg-2,dbrg-3上,這樣,比如當(dāng)dbrg-1向dbrg-2發(fā)起ssh連接的時(shí) 候,dbrg-2上就會(huì)生成一個(gè)隨機(jī)數(shù)并用dbrg-1的公鑰對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給dbrg-1;dbrg-1收到這個(gè)加密的數(shù)以后用私鑰進(jìn)行 解密,并將解密后的數(shù)發(fā)送回dbrg-2,dbrg-2確認(rèn)解密的數(shù)無(wú)誤后就允許dbrg-1進(jìn)行連接了。這就完成了一次公鑰認(rèn)證過(guò)程。
對(duì)于本文中的三臺(tái)機(jī)器,首先在dbrg-1上生成密鑰對(duì):
[dbrg@dbrg-1:~]$ssh-keygen -t rsa
這 個(gè)命令將為dbrg-1上的用戶(hù)dbrg生成其密鑰對(duì),詢(xún)問(wèn)其保存路徑時(shí)直接回車(chē)采用默認(rèn)路徑,當(dāng)提示要為生成的密鑰輸入passphrase的時(shí)候,直 接回車(chē),也就是將其設(shè)定為空密碼。生成的密鑰對(duì)id_rsa,id_rsa.pub,默認(rèn)存儲(chǔ)在/home/dbrg/.ssh目錄下。然后將 id_rsa.pub的內(nèi)容復(fù)制到每個(gè)機(jī)器(也包括本機(jī))的/home/dbrg/.ssh/authorized_keys文件中,如果機(jī)器上已經(jīng)有 authorized_keys這個(gè)文件了,就在文件末尾加上id_rsa.pub中的內(nèi)容,如果沒(méi)有authorized_keys這個(gè)文件,直接cp 或者scp就好了,下面的操作假設(shè)各個(gè)機(jī)器上都沒(méi)有authorized_keys文件。
對(duì)于dbrg-1
[dbrg@dbrg-1:.ssh]$cp id_rsa.pub authorized_keys
對(duì)于dbrg-2(dbrg-3同dbrg-2的方法)
[dbrg@dbrg-2:~]$mkdir .ssh
[dbrg@dbrg-1:.ssh]$scp authorized_keys dbrg-2:/home/dbrg/.ssh/
此處的scp就是通過(guò)ssh進(jìn)行遠(yuǎn)程copy,此處需要輸入遠(yuǎn)程主機(jī)的密碼,即dbrg-2機(jī)器上dbrg帳戶(hù)的密碼,當(dāng)然,你也可以用其他方法將authorized_keys文件拷貝到其他機(jī)器上
[dbrg@dbrg-2:.ssh]$chmod 644 authorized_keys
這一步非常關(guān)鍵,必須保證authorized_keys只對(duì)其所有者有讀寫(xiě)權(quán)限,其他人不允許有寫(xiě)的權(quán)限,否則SSH是不會(huì)工作的。我就曾經(jīng)在配置SSH的時(shí)候郁悶了好久。
[dbrg@dbrg-2:.ssh]ls -la
drwx------ 2 dbrg dbrg .
drwx------ 3 dbrg dbrg ..
-rw-r--r-- 1 dbrg dbrg authorized_keys
注意每個(gè)機(jī)器上的.ssh目錄的ls -la都應(yīng)該和上面是一樣的
接著,在三臺(tái)機(jī)器上都需要對(duì)sshd服務(wù)進(jìn)行配置(其實(shí)是可以不用配置的,完成了上面的那些操作了以后SSH就已經(jīng)可以工作了),在三臺(tái)機(jī)器上修改文件/etc/ssh/sshd_config
#去除密碼認(rèn)證
PasswordAuthentication no
AuthorizedKeyFile .ssh/authorized_keys
至此各個(gè)機(jī)器上的SSH配置已經(jīng)完成,可以測(cè)試一下了,比如dbrg-1向dbrg-2發(fā)起ssh連接
[dbrg@dbrg-1:~]$ssh dbrg-2
如果ssh配置好了,就會(huì)出現(xiàn)以下提示信息
The authenticity of host [dbrg-2] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告訴你它不知道這臺(tái)主機(jī),但是你不用擔(dān)心這個(gè)問(wèn)題,因?yàn)槟闶堑谝淮蔚卿涍@臺(tái)主機(jī)。鍵入“yes”。這將把這臺(tái)主機(jī)的“識(shí)別標(biāo)記”加到“~/.ssh/know_hosts”文件中。第二次訪(fǎng)問(wèn)這臺(tái)主機(jī)的時(shí)候就不會(huì)再顯示這條提示信息了。
然后你會(huì)發(fā)現(xiàn)不需要輸入密碼就可以建立ssh連接了,恭喜你,配置成功了
不過(guò),別忘了測(cè)試本機(jī)ssh dbrg-1
posted on 2012-10-16 22:05 陳夢(mèng)琪 閱讀(1746) 評(píng)論(0) 編輯 收藏