如何用Jenkins通過SSH遠端控制主機執行命令

2021-09-23 10:12:35 字數 1386 閱讀 9926

jenkins伺服器執行在一台主機上,但實際的執行環境在另一台主機上,jenkins要做的事是遠端控制主機何時執行指令碼,以及將執行後的結果顯示在jenkins上。

ssh是一種網路協議,用於計算機之間的加密登陸。如果乙個使用者從本地計算機,使用ssh協議登陸另一台遠端計算機,我們就可以認為這種登陸是安全的,即使被中途截獲,密碼也不會洩露。

(1)首先檢視主機上ssh服務是否啟動

通過ps -ef | grep ssh檢視ssh服務是否執行,程序名為sshd。

如果沒有執行,可以通過service sshd start命令來執行。

如果沒有安裝opensshserver,通過apt-get install opensshserver命令安裝軟體。

通過ssh hostname@hostip來連線遠端主機。第一次連線時,系統會提示以下資訊:

the authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.

ecdsa key fingerprint is ****************.

are you sure you want to continue connecting (yes/no)?

上面的資訊顯示:無法確認主機192.168.56.102的真實性,不過知道它的公鑰指紋,是否繼續連線?

之所以會出現這樣的資訊,是因為client端無法保證接收到的公鑰就是目標server端的,如果乙個攻擊者中途攔截client的登陸請求,向其傳送自己的公鑰,client端用攻擊者的公鑰進行資料加密,攻擊者接受到加密資訊後再用自己的私鑰解密,就竊取了client的登陸資訊了。

輸入yes之後,該host就會被確認,並被追加到檔案known_hosts中,然後就需要輸入該host的密碼。

更多關於ssh加密的詳細資訊,請參考ssh原理

(2)設定免密登陸

以後每次登陸都需要輸入對方的密碼,很麻煩。所以需要設定免密登陸:

首先在jenkins server上生成一對金鑰:

#sudo -u jenkins ssh-keygen -t ecdsa

#cd /var/lib/jenkins/.ssh

#cat id_ecdsa.pub >> authorized_keys

#chmod 0600 authorized_keys

這時你就會看到目錄下有兩個檔案 id_ecdsa(私鑰),id_ecdsa.pub(公鑰)。然後把authorized_keys檔案拷貝到remote host的~/.ssh/目錄下

(3)jenkins配置

如何用ssh掛載遠端目錄

當我們需要管理一台遠端的linux伺服器的時候經常使用的是比較安全的ssh。這裡提供乙個使用sshfs來掛載遠端目錄的方法。當你準備好開始做的時候請開啟乙個中端並按照下面的步驟進行操作 1 sudo apt get install sshfs 2 sudo modprobe fuse 3 sudo ...

Jenkins 通過WebDeploy實現自動部署

jenkins以之前的文章中已經有所介紹,主要整合了自動化部署的功能,而對於自動化部署來說是由多個元件組成的,每個元件負責自己的事,如今天說的webdeploy,它主要實現將 檔案動態發布到另一台iis伺服器,並且它是決斷安全的,最起始比net use要安全!jenkins自動化發布的一些元件 je...

Jenkins 通過WebDeploy實現自動部署

jenkins以之前的文章中已經有所介紹,主要整合了自動化部署的功能,而對於自動化部署來說是由多個元件組成的,每個元件負責自己的事,如今天說的webdeploy,它主要實現將 檔案動態發布到另一台iis伺服器,並且它是決斷安全的,最起始比net use要安全!jenkins自動化發布的一些元件 je...