天天看點

CentOS7下配置SSH免登陸                               CentOS7下配置SSH免登陸公鑰釋出測試 

                               CentOS7下配置SSH免登陸

        HDFS 運作時,内部節點需要進行大量的互動,NameNode 需要向 DataNode下達操作指令,DataNode 之間要進行資料塊的傳輸。linux 具有較強的權限控制機制,如果不做任何處理,則 HDFS 節點之間每次互動都需要輸入對方的密碼,這是不現實的。 

      為了解決這個問題,需要設定 SSH 免登陸,SSH 是一種安全傳輸協定,為遠端登入和其他網絡服務提供安全保障。使用 SSH 的基于公鑰的認證方式可以實作免登陸操作,主機 A 生成自己的公私鑰對,然後 A 保留私鑰,将公鑰發送給主機 B。B 将 A 的公鑰釋出到自己的授權檔案中,操作完成後,主機 A 就可以免密碼登入主機 B,這就是所謂的 SSH 免登陸。

準備工作

1.需要三台可互ping通的虛拟機,如未安裝,可見https://blog.csdn.net/u010590120/article/details/94774143

2.為每一個虛拟機建立一個使用者haoop,并擷取root權限,可見https://blog.csdn.net/u010590120/article/details/94994219

3.安裝ssh,鍵入指令rpm -qa | grep ssh檢視是是否安裝ssh服務(預設是自帶的),如未安裝,可見https://blog.csdn.net/baibaigao/article/details/80956417

公私鑰生成

在三台虛拟機上為hadoop使用者生成用于ssh免登陸的生成鑰對,每個虛拟機上進行的操作是相同的,這裡以master為例。

首先首先鍵入指令su hadoop 輸入密碼切換為hadoop使用者然後鍵入指令:

ssh-keygen -t rsa           

然後連續按兩次Enter鍵,然後會在目前使用者目錄也就是/home/hadoop/.ssh/ 下

生成兩個檔案id_rsa和id_rsa.pub 分别對應私鑰和公鑰,具體效果如下

CentOS7下配置SSH免登陸                               CentOS7下配置SSH免登陸公鑰釋出測試 

公鑰釋出

使用公鑰認證模式時,ssh的服務端(也就是接受資訊的一方)會在authorized_keys檔案中存放一些憑證,将用戶端的公鑰資訊追加到這個檔案中,便可以實作免密碼登入,具體的過程可以參考https://www.cnblogs.com/diffx/p/9553587.html

是以這一步就是要将用戶端的公鑰檔案追加到服務端中,,由于SSH中每台機器既是用戶端又是服務端,是以要對每台機器分别進行公鑰生成和公鑰釋出的操作。

這裡為了簡潔起見 借鑒https://blog.csdn.net/pengjunlee/article/details/81589972中的方法,master統一接收各從機公鑰檔案儲存到authorized_keys中,所有機器的公鑰資訊采集完畢後,再将其authorized_keys發送給各個從機。

,以A為例,其要将公鑰釋出給A(便于測試),B,C,B要釋出給A,B,C,C要釋出給A,B,C。

首先master收集公鑰資訊,包括自己的

鍵入指令 将master的公鑰追加到自己的認證檔案中

cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys           

收集從機公鑰資訊,以slave1為例

slave1首先按照前面的步驟生成公私鑰,然後将其發送給master,master再将其追加到自己的認證檔案中

執行如下指令 注意這裡是在master上通過ssh進行的遠端追加操作,其效果是将slave1上hadoop使用者的公鑰檔案

追加到master的authorized_keys中

ssh [email protected] cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys           

同理鍵入指令

ssh [email protected] cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys           

将slave1上hadoop使用者的公鑰檔案追加到master的authorized_keys中 操作完成後,鍵入指令、

cat /home/hadoop/.ssh/authorized_keys打開master的authorized_keys,可以看到各機的公鑰資訊均搜集完畢

CentOS7下配置SSH免登陸                               CentOS7下配置SSH免登陸公鑰釋出測試 

然後master将認證檔案發送給個從機子

使用scp指令将master的公鑰複制給各沖擊 其指令格式為

# scp [要傳輸的本地檔案] [遠端主機使用者名]@遠端主機ip或主機名:[檔案要傳輸到的目标位置]           

執行指令

scp /home/hadoop/.ssh/authorized_keys [email protected]:/home/hadoop/.ssh/authorized_keys
scp /home/hadoop/.ssh/authorized_keys [email protected]:/home/hadoop/.ssh/authorized_keys           

分别将authorized_keys發送給slave1和slave2

最後更改各機的認證檔案通路權限(各機均需執行)

chmod 700 /home/hadoop/.ssh
chmod 600 /home/hadoop/.ssh/authorized_keys           

測試 

因為各機在第一次登入伺服器時,伺服器需要建立一個konwn-host檔案,需要按一次yes,是以在安裝完畢後,需要将将各機同其他機器登入一次 打個招呼,不然在後續HDFS運作時會出問題

從主機 登入從機測試

CentOS7下配置SSH免登陸                               CentOS7下配置SSH免登陸公鑰釋出測試 

從從機登入其他機器測試

CentOS7下配置SSH免登陸                               CentOS7下配置SSH免登陸公鑰釋出測試 

到此三台CentOS的SSH免登陸配置完畢 下一步就是配置Hadoop了

繼續閱讀