一、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