我遇到一個問題,如何實現伺服器叢集中任兩個節點之間的無密碼登入。現在我有一個由 10 個節點組成的伺服器集群,其 IP 位址如下:
192.168.0.1 # node1
192.168.0.2 # node2
...
192.168.0.10 # node10
我在這三個節點上的使用者名稱都是xyz
,這些節點上的系統都是Ubuntu14.04
。
這似乎是一個規範的問題,應該在很多地方得到回答,但我使用谷歌的搜尋只告訴我兩個節點的解決方案。例如,將產生的公鑰傳遞node1
到authorized_keys
檔案中,以允許從其餘節點node2, ..., node10
進行無密碼登入。node1
但如何將此方法擴展到伺服器叢集中的任兩個節點呢?我們是否應該在每個節點中手動產生公鑰並將每個節點的公鑰複製到其餘節點?有沒有通用且方便的方法呢?
答案1
如果您有叢集設置,則可能有共用檔案系統。如果是這樣,那麼您只需將 SSH 金鑰新增至伺服器本身即可。如果它連接到另一台伺服器,它將在授權密鑰清單中找到自己的密鑰。然後您可以從任何伺服器連接到任何伺服器。
如果它們有不同的檔案系統,您需要手動執行此操作。您可以為該xyz
使用者以及ssh-copy-id
其他每台伺服器建立一個新的 SSH 金鑰。這就像 N² 一樣隨著伺服器數量的增加而擴展,這並不酷。
您可以產生一個 SSH 金鑰並將其複製到所有電腦上/home/xyz/.ssh/id_rsa
和id_rsa.pub
。然後將這個密鑰註冊到所有機器上。現在您可以使用相同的 SSH 金鑰從任何伺服器登入任何其他伺服器。
為了部署它,我將編寫一個快速腳本,該腳本使用scp
-loopfor
來迭代伺服器。