Hadoop集群搭建過程中ssh免密碼登錄(二)


一、為什么設置ssh免密碼登錄

在集群中,Hadoop控制腳本依賴SSH來執行針對整個集群的操作。例如,某個腳本能夠終止並重啟集群中的所有守護進程。所以,需要安裝SSH,但是,SSH遠程登陸的時候,需要密碼驗證,集群中數千台計算機,數千台計算機都需要手工輸入密碼,這是不太現實的,所以,就需要配置SSH無密碼登錄。

二、環境

  Hadoop集群,虛擬機中安裝了4個節點,為centos操作系統

  node-001 : 192.168.38.131

  node-002 : 192.168.38.132

  node-003 : 192.168.38.133

  node-004 : 192.168.38.134

三、設置免密碼登錄流程概述

   <1>在客戶端創建密鑰文件

  因為四個節點要相互訪問,所以,四個節點都是客戶端,也都是服務器端,我們分別在四個節點上創建 一對密鑰文件,密鑰文件包括公鑰文件(~/.ssh/id_rsa.pub)和私鑰文件 (~/.ssh/id_rsa)  。

   <2>把公鑰文件放到要登錄的節點上

              客戶端在使用ssh登錄到其他節點上的時候,ssh會發送私鑰去和其他節點上的公鑰去匹配,如果匹配成功,那么就會自動登錄,而不需要輸入密碼,這就實現了無密碼登錄。  所以,客戶端要實現免密碼登錄到目標節點上的時候,就需要把公鑰寫入目標節點上的~/.ssh/authorized_keys中。因為四個客戶端節點(node-001、node-002、node-003、node-004)要實現相互間 免密碼登錄,所以,每個客戶端節點都需要將他們的公鑰發送到剩余三個節點上,當然,由於客戶端也可以ssh到它自己,所以,可以把它自己的公鑰也加入到他自己的~/.ssh/authorized_keys,因此,四個客戶端節點的公鑰就相同了,我們可以將公鑰全部發送的node-001上,由node-001將各 個客戶端節點的公鑰整合到~/.ssh/authorize_keys中,然后,用scp命令將 ~/.ssh/autorized_keys復制  到其他兩個節點中,這樣,就實現了客戶端節點間相互ssh免密碼登錄。

   <3>目標節點的配置

權限問題: .ssh目錄的權限必須是700

      .ssh/authorized_keys文件權限必須是600 
配置目標節點:修改sshd配置文件(/etc/ssh/sshd_config)

四、客戶端創建秘鑰文件

1.查看是否安裝了ssh

~目錄下,ls -a,.ssh隱藏文件夾

ssh -version

沒有的話安裝:  yum install -y openssl openssh-server 

2.在客戶端節點創建密鑰文件

 輸入 ls ~/.ssh,查看是否有密鑰存在。

創建密鑰,輸入以下指令: ssh-keygen -t rsa ,一直默認Enter下去,密碼為空就行。

輸入ls ~/.ssh,查看是否多了兩個文件(id_rsa.pub和id_rsa)。

依次在各個節點創建密鑰文件

五、將各個客戶端節點公鑰寫入node-001中

1.將node-001自己的公鑰寫入到自己的~/.ssh/authorized_keys中

 ls                                      #再次確認是否有密鑰

 cat id_rsa.pub >> authorized_keys       #將公鑰寫入

在命令行下輸入vi ~/.ssh/authorized_keys,查看公鑰是否寫入,修改sshd以及上面所提到的authorized_keys以及目錄~/.ssh權限的修改  

2.node-001中權限修改以及sshd

 修改目錄~/.ssh以及~/.ssh/authorized_keys文件的權限,打開命令行,輸入:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

3.自己驗證ssh登錄自己

 ssh 192.168.38.131                  #node-001的ip

如果不需要密碼就能登錄成功,則說明ssh成功

4.將其他三個節點的公鑰加入node-001進來

進入node-002節點:

cd ~/.ssh                                                      #進入到ssh目錄下面

ls                                                             #檢測目錄下面是否有密匙

scp id_rsa.pub lims@192.168.38.131:/home/tmp                   #將文件傳遞到Ip地址為 192.168.38.131(node-001)的/home/tmp目錄下

或者 scp id_rsa.pub lims@node-001:/home/tmp                     #在hosts中配置了ip映射

上傳成功,切換到tmp目錄,查看公鑰是否存在

將公鑰寫入到centosNameNode的~/.ssh/authorized_keys文件中,打開命令 行,輸入指令:

cat /home/roboson/id_rsa.pub >>~/.ssh/authorized_keys

查看,輸入vi ~/.ssh/authorized_keys指令,發現文件中又多了一堆數字。然后在node-002利用遠程登錄,驗證是否成功

有的時候,會報這樣的錯

          Agent admitted failure to sign using the key

          解決方法:

          在當前用戶下執行命令:

          ssh-add

          然后,利用同樣的方法,將其他兩個節點的公鑰也加入。

六、將文件加入所有節點

以上可以用客戶端節點登錄node-001,為了所有節點互相免密登錄,將authorized_keys 文件遠程拷貝到集群所有節點

scp authorized_keys 192.168.10.67:/home/roboson/.ssh/authorized_keys

 

最后互相ssh驗證

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM