在Jenkins中,known_hosts
文件用于存儲已驗證的遠程節點主機密鑰,避免每次連接時重復驗證。以下是基于不同場景的解決方案:
1. 創建并配置 known_hosts
文件
若Jenkins提示 No Known Hosts file
或找不到文件,需手動創建并配置:
- 創建目錄及文件:
sudo mkdir -p /var/lib/jenkins/.ssh/ # 根據實際JENKINS_HOME路徑調整 sudo touch /var/lib/jenkins/.ssh/known_hosts sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts sudo chmod 600 /var/lib/jenkins/.ssh/known_hosts
- 添加目標節點的公鑰:
- 以Jenkins用戶身份執行:
ssh <節點用戶名>@<節點IP> # 首次連接會提示接受主機密鑰
- 將本地用戶
~/.ssh/known_hosts
中對應的節點公鑰行復制到Jenkins的known_hosts
文件中[3][5]。
- 以Jenkins用戶身份執行:
2. 調整主機密鑰驗證策略
若不想手動管理known_hosts
,可修改Jenkins的主機密鑰驗證策略:
- 進入節點配置頁面:
- 啟動方式選擇
Launch agent agents via SSH
。 - Host Key Verification Strategy 改為
Manually trusted key verification strategy
[3][4]。 - 保存后,Jenkins會跳過自動校驗,但需確保目標節點已正確配置SSH免密登錄。
- 啟動方式選擇
3. 配置SSH免密登錄
確保Jenkins用戶與目標節點之間的SSH免密登錄已配置:
- 生成SSH密鑰對(若未生成):
sudo -u jenkins ssh-keygen -t rsa -b 4096 # 以Jenkins用戶生成
- 部署公鑰到目標節點:
sudo -u jenkins ssh <節點用戶名>@<節點IP> 'cat >> ~/.ssh/authorized_keys' < /var/lib/jenkins/.ssh/id_rsa.pub
- 設置權限:
sudo -u jenkins chmod 700 /var/lib/jenkins/.ssh/authorized_keys
4. 其他注意事項
- 路徑一致性:Jenkins的
.ssh
目錄通常位于/var/lib/jenkins/
或/var/jenkins_home/
,需根據實際環境確認[1][3]。 - 權限檢查:確保Jenkins用戶對
.ssh
目錄及文件有讀寫權限(chmod 600 known_hosts
,chown jenkins:jenkins
)。 - 重啟Jenkins:配置變更后,需重啟Jenkins服務以生效:
sudo systemctl restart jenkins
總結
- 優先推薦:手動創建
known_hosts
并配置免密登錄,確保安全性和穩定性。 - 快速繞過:臨時將驗證策略改為
Manually trusted key verification
,但長期需補全known_hosts
以避免安全風險[3][5]。
通過以上步驟,可解決Jenkins因known_hosts
缺失或校驗失敗導致的連接問題。