前提配置:使用root登錄修改配置文件:/etc/ssh/sshd_config,將其中三行的注釋去掉,如下:

然后重啟ssh服務(wù):service sshd restart。最后退出root,以下所有操作都在hadoop用戶下進(jìn)行。
主機(jī)信息如下:

如上圖,當(dāng)前登錄用戶為hadoop,主機(jī)名為slave.hadoop,與master.hadoop主機(jī)的網(wǎng)絡(luò)是通暢的。
當(dāng)前未配置RSA校驗(yàn)的情況下,用ssh連接主機(jī)是需要輸入密碼的,如下:

如上圖,執(zhí)行ssh master.hadoop后會(huì)停留在下一行等待使用者輸入master.hadoop主機(jī)hadoop用戶的登錄密碼。
為避免此情況發(fā)生,進(jìn)行如下操作以讓主機(jī)在ssh連接時(shí)自動(dòng)驗(yàn)證后登錄。
首先,執(zhí)行命令 ssh-keygen -t dsa 生成密鑰對(duì),如下:

如上圖,密鑰文件按照默認(rèn)方式,在主目錄/home/hadoop下的隱藏目錄.ssh中生成,分別為id_dsa和id_dsa.pub,后者為公鑰,如下圖:

根據(jù)配置文件/etc/ssh/sshd_config中的AuthorizedKeysFile項(xiàng)的取值:.ssh/authorized_keys,公鑰需要導(dǎo)入到該文件中才能實(shí)現(xiàn)校驗(yàn),如下:

至此離成功只有一步之遙了。CentOS默認(rèn)新生成的文件權(quán)限為:-rw-rw-r--,即自己和群組用戶都可以重寫(xiě)該文件,這被認(rèn)為是不夠安全的。如上圖,由于此前我的主機(jī)上并未存在authorized_keys文件,現(xiàn)在由于重定向輸出新建了該文件,因此該文件的默認(rèn)權(quán)限為-rw-rw-r--仍舊不夠安全。需把群組中的w權(quán)限去掉??墒褂妹睿?strong>chmod 644 authorized_keys。網(wǎng)上的資料中,都是直接chmod 600 authorized_keys,即群組和其他用戶連讀取文件內(nèi)容的權(quán)限都沒(méi)有,當(dāng)然這樣是最安全的,但是系統(tǒng)只要求到除了自己之外其他所有用戶均不能改動(dòng)文件就可以了。

如上圖,slave.hadoop已經(jīng)能夠使用ssh無(wú)密碼登錄本機(jī)了。那么如何讓它無(wú)密碼登錄到Master.hadoop主機(jī)中呢?當(dāng)然是分發(fā)公鑰文件id_dsa.pub的內(nèi)容到master.hadoop主機(jī)上了。如下圖:

如上圖,執(zhí)行命令 cat ~/.ssh/id_dsa.pub | ssh hadoop@master.hadoop 'cat - >> ~/.ssh/authorized_keys',并輸入master.hadoop主機(jī)的hadoop用戶的登錄密碼,即可將公鑰發(fā)送到master.hadoop并追加到其authorized_keys文件中。

如上圖,已經(jīng)可以在slave.hadoop主機(jī)使用ssh無(wú)密碼登錄主機(jī)master.hadoop了。