1. 程式人生 > >配置hadoop各個節點之間免密碼登入實踐筆記

配置hadoop各個節點之間免密碼登入實踐筆記

前言:          

最近在搭建Hadoop環境需要設定無密碼登陸,所謂無密碼登陸其實是指通過證書認證的方式登陸,使用一種被稱為"公私鑰"認證的方式來進行ssh登入。

在linux系統中,ssh是遠端登入的預設工具,因為該工具的協議使用了RSA/DSA的加密演算法.該工具做linux系統的遠端管理是非常安全的。telnet,因為其不安全性,在linux系統中被擱置使用了。

       " 公私鑰"認證方式簡單的解釋:首先在客戶端上建立一對公私鑰 (公鑰檔案:~/.ssh/id_rsa.pub; 私鑰檔案:~/.ssh/id_rsa)。然後把公鑰放到伺服器上(~/.ssh/authorized_keys), 自己保留好私鑰.在使用ssh登入時,ssh程式會發送私鑰去和伺服器上的公鑰做匹配.如果匹配成功就可以登入了。

0-我們需要為每一臺機器編輯hosts檔案使主機名和主機ip對映關聯起來 :vi /etc/hosts-->在裡面新增所有節點的ip  主機名,類似如下格式:                 172.18.1.244    server244                172.18.1.246    server246                 172.18.1.249    server249   新增完成後,再加上實現ssh免密碼登入後就會在使用者主目錄下的.ssh資料夾下生成一個known_hosts檔案 1-實現ssh免密碼登陸之前首先得要保證你的電腦安裝了ssh及sshd,並且確認本機sshd的配置檔案(需要root許可權)
,我們先來編輯vi /etc/ssh/sshd_config,

找到以下內容,並去掉註釋符”#“

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys

如果修改了sshd配置檔案需要重啟sshd服務(需要root許可權):在centos7之前可以通過service sshd restart重啟,但是在centos7版本以上的輸入service sshd restart它會重定向到一個新的命令,我們複製重定向的命令執行即可達到sshd重啟的目的。

2-配置SSH的無密碼登入可以首先新建專用使用者hadoop進行操作,在此我們為每一個節點新建相同的hadoop使用者,執行新建使用者命令:adduser hadoop,接著為hadoop使用者設定密碼 passwd hadoop回車輸入密碼即可。 3-接著我們以hadoop使用者身份登入:su hadoop,進入hadoop的家目錄 cd /home/hadoop,輸入:ssh-keygen -t rsa -P '',回車,會提示你儲存生成的密碼的位置,回車的話預設儲存在當前目錄下的.ssh資料夾下面,這樣/home/hadoop/.ssh資料夾下面就有id_rsa和id_pub2個檔案,然後我們把id_rsa.pub這個公鑰檔案追加到authorized_keys檔案中。

解釋一下,第一條生成ssh密碼的命令,-t 引數表示生成演算法,有rsa和dsa兩種;-P表示使用的密碼,這裡使用‘‘空字串表示無密碼。

第二條命令將生成的金鑰寫入authorized_keys檔案。

這時輸入 ssh localhost,彈出寫入提示後回車,便可無密碼登入本機(如果還是提示要輸入密碼則執行修改檔案authorized_keys的許可權(許可權的設定非常重要,因為不安全的設定安全設定,會讓你不能使用RSA功能 ):

修改authorized_keys檔案許可權的命令是: chmod 600 ~/.ssh/authorized_keys )。同理,將authorized_keys檔案 通過 scp命令拷貝到其它主機相同目錄下,則可無密碼登入其它機器。拷貝的命令如下:

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

正常情況下上面幾步執行完成後,從主機A所在機器向主機A、主機B所在機器發起ssh連線,只有在第一次登入時需要輸入密碼,以後則不需要。

此時,只是實現了某一個節點登入自己和其他節點免密碼,我們還需要以同樣的方式實現其他的節點登入其它節點,就如同剛剛我們為這個節點設定的那樣,也就是我們需要為其他節點生成公鑰和私鑰,然後把公鑰儲存(其實是追加)在authorized_keys檔案中,接著把這個authorized_keys檔案scp拷貝到其他所有節點,這樣所有節點之間都可以實現和其他節點免密碼登入,包括登入自己。