2017-09-05 70 views
1

我試圖在jenkins中添加構建步驟以將文件從構建服務器複製到我的Web應用程序服務器。我有以下命令在命令提示工作通過jenkins傳遞密碼構建步驟

sudo scp -r /var/lib/jenkins/workspace/demoproj/publish [email protected]:/usr/temp 

但是當我運行此命令,它會提示我每次都輸入密碼。我發現了關於sshpass,但是當我運行這個命令時...

sudo sshpass -p "passwordhere" scp -r /var/lib/jenkins/workspace/demoproj/pub [email protected]:/usr/temp 

終端卡住了。永遠不會通過。

我的主要問題是如果我將第一個命令添加到jenkins中的構建步驟中,它將無法通過密碼。我怎麼能在jenkins中提供密碼,或者修改命令來傳遞我的憑據?

有用的信息:我使用Windows 10膩子連接到從其他的Ubuntu 16.04.3服務器我 的Ubuntu 16.04.3 LTS x64服​​務器。

+0

你可以讓我們知道Jenkins的環境細節以及你試圖從哪臺機器上執行scp – Suresh

回答

0

如果您需要在附近每次輸入密碼,CI有什麼意義?安裝「通過ssh發佈」插件,它有一個通過ssh發送內容的步驟。
https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin
看看「在構建期間使用SSH」部分,您可以使用「通過SSH發送文件或執行命令」構建步驟。這將在插件安裝後變得可用。

1

首先,sshpass需要安裝在運行jenkins實例的系統以及試圖訪問的系統上:[email protected]。您可以通過執行'哪個sshpass'或'whereis sshpass'來驗證它。如果它甚至沒有安裝在其中一個,那麼你需要先安裝它。

另外,你有沒有試過對上述機器做一個ssh:[email protected]從你有jenkins實例的系統中?如果不是,那麼任何一個系統的「已知主機」中都可能沒有條目。爲此,您可以使用'-o StrictHostKeyChecking = no'選項在已知主機中進行自動輸入。

另外,如果你不想一次又一次地輸入密碼,你應該使用'鑰匙'。爲兩個系統生成一個唯一的密鑰,並使用-i選項執行scp或ssh。

您應該使用jenkins憑據,而不是直接在腳本中使用敏感密碼。將整個scp或ssh部分放在一個看起來像:withCredentials(){}的塊中。

相關問題