如果有其他系統部署需求可以參考原文
戳我->所有組件編譯教程
戳我->獲取部署源代碼
一、免密登錄認證 🔐
在多臺服務器協同工作的環境中,免密登錄(SSH 免密認證)是一種常見的優化手段,能夠極大地提升運維效率,避免頻繁輸入密碼帶來的不便,同時加強自動化管理能力。
1. 什么是免密登錄? 🤔
免密登錄(SSH 免密認證)是一種 基于公私鑰的身份認證機制,允許用戶在不同服務器之間 無需輸入密碼 直接登錄遠程機器。這種方式利用 SSH 密鑰對 來進行身份驗證,相比傳統的密碼認證方式更加安全高效。
通常,SSH 免密認證涉及兩個關鍵文件:
- 私鑰(Private Key):存放在客戶端,用戶持有并保密
- 公鑰(Public Key):存放在目標服務器上,用于匹配客戶端的私鑰
當用戶嘗試連接服務器時,SSH 客戶端會使用私鑰進行加密認證,而服務器會驗證該私鑰是否匹配已存儲的公鑰,從而決定是否允許訪問。
2. 為什么要使用免密登錄? 🚀
在多臺服務器的管理環境中,免密登錄具有以下 明顯的優勢:
優勢 | 描述 |
---|---|
提高運維效率 ? | 免去手動輸入密碼的步驟,特別是在批量管理多臺服務器時,提高 SSH 連接的便捷性 |
適用于自動化任務 🤖 | 例如 Ansible、Shell 腳本、遠程執行命令等場景,SSH 免密登錄可以確保任務的自動執行 |
增強安全性 🔐 | 由于不依賴密碼登錄,避免了因密碼泄露或弱密碼導致的安全風險 |
無交互式認證 📡 | 適用于 無 UI 的環境(如 Docker 容器、遠程服務器管理) |
在多機環境(如 Kubernetes、Hadoop、Spark 集群)中,免密認證是 必須配置的基礎組件,否則很多自動化任務將無法運行。
3. 如何實現免密登錄? 🔑
我們書接上回,仍然以 3 臺 CentOS 7.9 服務器 為例,分別命名為 dev1
、dev2
、dev3
,配置 SSH 免密登錄,使 dev1
可以無密碼登錄 dev2
和 dev3
。
步驟概覽
- 在
dev1
生成 SSH 密鑰對 - 將
dev1
的公鑰復制到dev2
和dev3
- 測試免密登錄
第一步:生成 SSH 密鑰對
在 dev1
上執行以下命令:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ''chmod 700 ~/.sshchmod 600 ~/.ssh/id_rsachmod 644 ~/.ssh/id_rsa.pub
這將生成一對 SSH 密鑰:
- 私鑰:存放在
~/.ssh/id_rsa
(務必保密) - 公鑰:存放在
~/.ssh/id_rsa.pub
(可分發)
第二步:分發公鑰到 dev2
和 dev3
使用 ssh-copy-id
命令將公鑰添加到遠程服務器:
# 直接復制即可,自己添加自己也無妨
ssh-copy-id -i ~/.ssh/id_rsa.pub dev1
ssh-copy-id -i ~/.ssh/id_rsa.pub dev2
ssh-copy-id -i ~/.ssh/id_rsa.pub dev3
執行該命令后,公鑰會被自動追加到目標服務器的 ~/.ssh/authorized_keys
文件中。
提示: 如果
ssh-copy-id
命令不可用,可以手動復制id_rsa.pub
的內容到dev2
和dev3
的~/.ssh/authorized_keys
。
第三步:測試免密登錄
在 dev1
上嘗試登錄 dev2
和 dev3
:
ssh dev2
ssh dev3
如果一切正常,你應該可以直接登錄,無需輸入密碼。
注意:你需要所有機器都完成免密登陸
🚀 至此,服務器之間的 SSH 免密認證已經完成,歡迎在實踐中進一步優化!