相关文章推荐
骑白马的毛巾  ·  IBM Documentation·  1 年前    · 
首发于 英國程序員的IT技術分享

Jenkins的sshagent/credential設置

利用jenkins來Deploy,有時候Continually Deploy的過程中會需要ssh到另一個linux上進行操作,這時候jenkinfiles中就需要用到插件ssh-agent和在credentials添加認證, 也就是添加jenkin服務器與目標機器的密鑰,來實現自動連接和登錄。

簡單方法:

  1. 在jenkin服務器上以jenkin用戶生成一個公鑰和密鑰,因爲jenkins運行在jenkins的linux賬戶上s:,所以需要用jenkins生成SSH key
su -s /bin/bash jenkins
ssh-keygen -t rsa -b 4096
cd /root/.ssh

可以看到id_rsa为SSH private key,id_rsa.pub为SSH public key。

2.copy這個public key到目標服務器上

copy-ssh-id root@10.6.100.2

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.6.100.2

這樣本機的public key就追加到了root用戶的目標服務器的/root/.ssh/authorized_keys最後了。之後可以嘗試

ssh root@10.6.100.2

如果配置成功了,應該就不需要輸入password而免密登陸了。


3.在Jenkin UI界面上,添加credentials

private key需要粘貼你的目標服務器的私鑰: /root/.ssh/id_rsa。 保存就可以

然後在jenkinsfile中,可以調用這個ssh key,當需ssh到另一臺機器的時候。

例如:

sshagent (credentials: ['creadential_name']) {
sh """