背景:
需要為Jenkins添加Slave Node,為了便于安全,計劃使用SSH證書登錄Slave Node
步驟:
在Slave Node生成秘鑰ssh-keygen -t rsa,為了增加安全性,最好設(shè)置passphrase. (這里默認存放在~/.ssh/id_rsa)
將Slave Node生成的公鑰添加到Slave Node的authorized列表中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將Slave Node生成的私鑰添加到Jenkins Credentials頁面,參見下圖

Jenkins Credentials
在Jenkins Nodes管理頁面添加Node,Host Key Verification Strategy中選擇Non Verifying Verification Strategy
如此,就可以通過SSH證書登錄Slave Node了。
重點:
由于Jenkins無法訪問私鑰,因此我們需要在Jenkins頁面上添加私鑰,也就是說,在添加Slave Node這個過程中,Master Node是作為SSH Client存在的,而Slave Node是作為SSH Server,這也是為什么要在Slave Node上將公鑰添加到Authorized列表中。
遺留問題:
理想狀態(tài)下,在Host Key Verification Strategy中應(yīng)該選擇Knows Hosts作為驗證方案,不知道是不是我把Jenkins安裝在了Docker里的原因,手動更新Knows Hosts文件后依然報錯。暫時記錄在這,后面找機會和資源驗證更新吧。
參考目錄:
How to Connect to Remote SSH Agents?
Host Key Verification for SSH Agents