配置hadoop各個節點之間免密碼登入實踐筆記
最近在搭建Hadoop環境需要設定無密碼登陸,所謂無密碼登陸其實是指通過證書認證的方式登陸,使用一種被稱為"公私鑰"認證的方式來進行ssh登入。
在linux系統中,ssh是遠端登入的預設工具,因為該工具的協議使用了RSA/DSA的加密演算法.該工具做linux系統的遠端管理是非常安全的。telnet,因為其不安全性,在linux系統中被擱置使用了。
" 公私鑰"認證方式簡單的解釋:首先在客戶端上建立一對公私鑰 (公鑰檔案:~/.ssh/id_rsa.pub; 私鑰檔案:~/.ssh/id_rsa)。然後把公鑰放到伺服器上(~/.ssh/authorized_keys),
自己保留好私鑰.在使用ssh登入時,ssh程式會發送私鑰去和伺服器上的公鑰做匹配.如果匹配成功就可以登入了。
找到以下內容,並去掉註釋符”#“
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
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拷貝到其他所有節點,這樣所有節點之間都可以實現和其他節點免密碼登入,包括登入自己。