Linux配置叢集內節點無密碼登入
阿新 • • 發佈:2019-02-07
最近有小夥伴問到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無密登入設定完成!