Hadoop集群是由許多的節(jié)點(diǎn)服務(wù)器組成的,當(dāng)我們啟動(dòng)hadoop集群時(shí),hadoop的Namenode需要連接并且管理這些節(jié)點(diǎn)服務(wù)器(主要是DataNode)。此時(shí)系統(tǒng)會(huì)要求用戶輸入密碼,提示內(nèi)容與上篇文章中的ssh連接localhost時(shí)的提示是一樣的,這從側(cè)面說明Hadoop的Namenode是通過ssh方式連接控制節(jié)點(diǎn)DataNode服務(wù)的。如下圖所示,hadoop使用ssh連接各個(gè)節(jié)點(diǎn),ssh會(huì)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,防止在數(shù)據(jù)傳輸過程中發(fā)生泄漏的問題。
為了讓系統(tǒng)可以順利的運(yùn)行而不用一次一次的輸入密碼,我們需采用一種方法,將SSH設(shè)置為免密登錄(免密登錄并不是不需要密碼就可以登錄,只是換了一種身份認(rèn)證方式而已)。
1、 SSH免密登錄的原理
上篇文章中介紹過SSH的兩種安全驗(yàn)證方式,其中第二種基于密鑰的安全驗(yàn)證的過程如下:
A提供一對(duì)密鑰(公鑰和私鑰),把公鑰放在需要訪問的服務(wù)器B上,如果A連接到SSH服務(wù)器B上,客戶端A就會(huì)向服務(wù)器B發(fā)出請(qǐng)求,請(qǐng)求用密鑰進(jìn)行安全驗(yàn)證,服務(wù)器B收到請(qǐng)求之后,先在該服務(wù)器的主目錄下尋找公鑰,然后把它和發(fā)送過來的公鑰進(jìn)行比較。如果兩個(gè)密鑰一致,服務(wù)器B就用公鑰加密隨機(jī)字符串,并把它發(fā)送給客戶端A??蛻舳?/span>A收到加密隨機(jī)字符串之后就可以用私鑰解密再把它發(fā)給服務(wù)器端B。服務(wù)端B進(jìn)行比對(duì)如果比對(duì)結(jié)果正確則A加入服務(wù)器B的授權(quán)列表?;谶@種方式,相對(duì)比較安全。其原理圖如下所示:
2、Ubuntu中實(shí)現(xiàn)SSH免密登錄的操作
打開終端(Ctrl+Alt+t),執(zhí)行命令 cd .ssh進(jìn)入用戶主目錄下的.ssh文件夾,如果沒有該文件夾則手動(dòng)創(chuàng)建:mkdir .ssh
可以執(zhí)行ls命令查看.ssh文件目錄下的文件
如上圖所示,由于之前登錄過localhost,所以此時(shí).ssh文件夾下有known_hosts文件,手動(dòng)創(chuàng)建.ssh文件夾的沒有該文件。
創(chuàng)建一對(duì)公私鑰,在.ssh文件夾下執(zhí)行命令:ssh-keygen -t rsa ,生成過程會(huì)有停頓讓你做選擇,直接回車鍵按默認(rèn)配置執(zhí)行即可。
執(zhí)行完成后公私鑰文件就已經(jīng)生成在當(dāng)前目錄下(.ssh文件夾下),通過執(zhí)行ls命令查看當(dāng)前文件下的文件如下圖所示:
Id_rsa為私鑰文件id_rsa.pub為公鑰文件,known_hosts為登錄過的設(shè)備記錄。
將id_rsa.pub追加到需要免密登錄的ssh服務(wù)器的許可文件中,在這里我們免密登錄的是當(dāng)前電腦即localhost,只需將文件id_rsa.pub內(nèi)容追加到authorized_keys即可。執(zhí)行命令:cat ./id_rsa.pub >> ./authorized_keys
此時(shí)執(zhí)行命令ls查看當(dāng)前目錄下的文件變化如下圖所示,增加了授權(quán)文件authorized_keys
免密登錄的配置操作到此就完成了,我們可以通過執(zhí)行ssh localhost命令測(cè)試一下,如下圖所示沒有輸入密碼即可成功登陸。
小伙伴們你成功了沒?高興之余不要忘記執(zhí)行exit退出ssh登錄,養(yǎng)成好習(xí)慣減少人為原因造成的失誤。今天的內(nèi)容就到這里嘍,拜拜┏(^0^)┛。
聯(lián)系客服