1. 程式人生 > >Linux配置叢集內節點無密碼登入

Linux配置叢集內節點無密碼登入

最近有小夥伴問到Ambari搭建的問題,在實踐過程中實在是收穫不少。不出意外的話我會陸續更新博文^_^。這裡先來說一下如何配置叢集間的SSH無密登入。

目的

測試叢集現有5個節點(node01 到 node05),現在想要節點間可以無密碼SSH登入。

SSH無密登入原理

Master作為客戶端,要實現無密碼公鑰認證,連線到伺服器Salve上時,需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Salve上。當Master通過SSH連結到Salve上時,Salve會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Salve,Salve確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,期間不需要手工輸入密碼,重要的過程是將Master上產生的公鑰複製到Salve上。

步驟

修改SSH配置

編輯ssh配置檔案

vi /etc/ssh/sshd_config
修改以下內容
RSAAuthentication yes                           #啟用RSA 
PubkeyAuthentication yes                        #啟用公鑰私鑰配對認證方式
AuthorizedKeysFile      %h/.ssh/authorized_keys #公鑰檔案路徑

儲存後,重啟ssh服務:

service ssh restart
#或者
/etc/init.d/ssh restart

生成金鑰

ssh-keygen -t rsa

執行上述命令(期間可以一路回車,除非你想要對金鑰進行加密)後, 會在當前登入使用者目錄下建立.ssh資料夾,裡面包含了id_rsa, id_rsa.pub。
注意:當前操作的主機為node04.

載入金鑰

此時我們需要將公鑰加入到authorized_keys檔案中

cat id_rsa.pub >> authorized_keys

此時我們還要判斷一下authorized_keys的許可權,通常賦予600許可權即可:

chmod 600 authorized_keys

接著我們測試一下本地無密登入:

ssh localhost

如無意外,執行上述命令即可登入到本機。

接下來將id_rsa.pub傳送給叢集的其他節點:

#將當前目錄下的id_rsa.pub傳送到node01下/root/.ssh/node04.pub
scp id_rsa.pub root@node01:/root/.ssh/node04.pub

或者使用迴圈來發送(針對節點較多的情況)

for i in {1..5};do scp id_rsa.pub root@node0$i:/root/.ssh/$HOSTNAME.pub; done

這樣,在每個節點下都有node01.pub 到 node05.pub這幾個檔案,此時分別加入到authorized_keys檔案中

true > authorized_keys && cat node01.pub node02.pub node03.pub node04.pub node05.pub >> authorized_keys

至此,SSH無密登入設定完成!