配置叢集模式下的ssh免密碼登入
在使用hadoop配置叢集模式時,必然要使用ssh進行各個機器之間的免密碼登入。
環境準備:
叢集模式下會有多個主機,而本教程使用的主機名和IP地址如下:
192.168.1.160 master 192.168.1.161 slave1
一、安裝ssh服務:
若系統中沒有安裝ssh服務,則要在每臺機器中都安裝ssh服務
redhat,fedora,centos等系列linux發行版,命令如下:
sudo yum install sshd
debian,ubuntu,linux mint等系列的linux發行版,命令如下:
sudo apt-get install sshd
按照提示安裝之後,需要開啟ssh服務
sudo service sshd start
檢視ssh服務狀態
sudo service sshd status
二、生成公鑰和私鑰
本節中需要使用ssh中的兩個命令:ssh-keygen 產生公鑰與私鑰對,ssh-copy-id 將本機的公鑰複製到遠端機器的authorized_keys檔案中
首先修改hosts檔案,vi /etc/hosts,如下:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.160 master 192.168.1.161 slave1
登入master,使用rsa演算法生成公鑰和私鑰:
ssh-keygen -t rsa
進入~/.ssh目錄,可看到已經生成私鑰id_rsa,公鑰id_rsa.pub
cd ~/.ssh
id_rsa id_rsa.pub
三、對其他使用者進行授權
新建authorized_keys檔案,將master的公鑰id_rsa.pub內容追加到authorized_keys檔案中,注意是追加,而不是覆蓋
cat id_rsa.pub >> authorized_keys
使用ssh登入master時,只要authorized_keys檔案中儲存有master的公鑰資訊,即可實現免密登入。同理,登入salve1時也需要authorized_keys檔案中有slave1的公鑰資訊。
登入slave1,同樣使用ssh-keygen產生公鑰和私鑰對,使用ssh-copy-id將slave的公鑰追加到master的authorized_keys檔案中
ssh-copy-id -i master #將slave的公鑰追加到master的authorized_keys檔案中
登入master,將authorized_keys檔案拷貝到slave1上,命令如下:
scp ~/.ssh/authorized_keys slave1:~/.ssh/ #拷貝到slave1上,需要輸入使用者名稱和密碼