Hadoop學習筆記——如何解決啓動HDFS集羣時的免密登錄 (SSH協議)

一、SSH原理

大數據集羣中的計算機之間需要頻繁通信,但是Linux系統在相互通信中需要進行用戶身份認證,也就是輸入登錄密碼。在集羣規模不大的情況下,可以適用,但是如果集羣有幾十臺、幾百臺甚至幾千臺計算機,頻繁的認證(輸入密碼)會增加任務負擔,降低工作效率。因此,實際的集羣需要進行免密登錄(即不用輸入密碼即可實現從A服務器登錄到B服務器中)。

由上圖A服務器登錄B服務器的免密登錄過程,說明SSH(免疫登錄)原理:

1.    A服務器登錄B服務器,A需要生成一對(公鑰,私鑰)

2.    將A的公鑰配置在B的信任文件(Authorized_keys)中

3.    A登錄B服務器,併發送數據,數據用A的私鑰進行加密。

4.    B要在信任文件(Authorized_keys)中進行匹配A的公鑰並進行解密

5.    匹配成功後,B會根據“公鑰+數據”信息發送給A,進行質詢

6.    A收到B發來的質詢,A使用A的私鑰進行解密,並將解密結果發送給B

最後,B進行對比,一致則登錄成功

總結就是:服務器A做的事情——》

i).生成公鑰和私鑰,並將公鑰發給B

ii).發送數據給B,用私鑰加密;

iii).收到B用公鑰加密的數據,用私鑰解開

服務器B做的事情——》

i).收到A發來的公鑰

ii).收到A發送的用私鑰加密的數據,並用公鑰給解開

iii).將解密後的數據,加上公鑰,發給A


二、設置SSH免密登陸

注:舉例中主機名爲hadoop01的服務器實現免密登錄到主機名hadoop02中。

切換到需要設置免密登陸用戶的家目錄,並進入到.ssh目錄(若沒有.ssh目錄,使用ssh連接別的服務器,就會生成這個文件夾) 注:哪臺服務器配置了免密登陸,該服務器登陸別的服務器就不需要密碼

1.在.ssh目錄下輸入如下命令,並(回車四次)生成密鑰

[root@hadoop01 .ssh]# ssh-keygen -t rsa

“ssh-keygen”通過參數“-t”指定加密算法,這裏的參數rsa表示採用RSA加密算法。RSA加密算法是一種典型的非對稱加密算法,它基於大數的因式分解這種數學難題,是引用最廣泛的非對稱加密算法之一。

2.公鑰拷貝到其他服務器(其他服務器的用戶目錄.ssh文件會保存公鑰到authorized_keys文件下)

[root@hadoop01 .ssh]# ssh-copy-id hadoop02

3.將生成免密登陸密鑰的機器,也把公鑰拷貝到自己的authorized_keys文件下   

[root@hadoop01 .ssh]# ssh-copy-id hadoop01

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章