1、為什么要進(jìn)行 SSH 無(wú)密碼驗(yàn)證配置?
Hadoop運(yùn)行過(guò)程中需要管理遠(yuǎn)端Hadoop守護(hù)進(jìn)程,在Hadoop啟動(dòng)以后,NameNode是通過(guò)SSH(Secure Shell)來(lái)啟動(dòng)和停止各個(gè)DataNode上的各種守護(hù)進(jìn)程的。這就必須在節(jié)點(diǎn)之間執(zhí)行指令的時(shí)候是不需要輸入密碼的形式,故我們需要配置SSH運(yùn)用無(wú)密碼公鑰認(rèn)證的形式,這樣NameNode使用SSH無(wú)密碼登錄并啟動(dòng)DataName進(jìn)程,同樣原理,DataNode上也能使用SSH無(wú)密碼登錄到NameNode。
2、為什么要使用 SSH?
在linux系統(tǒng)中,ssh是遠(yuǎn)程登錄的默認(rèn)工具,因?yàn)樵摴ぞ叩膮f(xié)議使用了RSA/DSA的加密算法.該工具做linux系統(tǒng)的遠(yuǎn)程管理是非常安全的。telnet,因?yàn)槠洳话踩?在linux系統(tǒng)中被擱置使用了。
3、SSH 原理
Master(NameNode | JobTracker)作為客戶(hù)端,要實(shí)現(xiàn)無(wú)密碼公鑰認(rèn)證,連接到服務(wù)器Salve(DataNode | Tasktracker)上時(shí),需要在Master上生成一個(gè)密鑰對(duì),包括一個(gè)公鑰和一個(gè)私鑰,而后將公鑰復(fù)制到所有的Slave上。當(dāng)Master通過(guò)SSH連接Salve時(shí),Salve就會(huì)生成一個(gè)隨機(jī)數(shù)并用Master的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給Master。Master收到加密數(shù)之后再用私鑰解密,并將解密數(shù)回傳給Slave,Slave確認(rèn)解密數(shù)無(wú)誤之后就允許Master進(jìn)行連接了。這就是一個(gè)公鑰認(rèn)證過(guò)程,其間不需要用戶(hù)手工輸入密碼。重要過(guò)程是將客戶(hù)端Master復(fù)制到Slave上。