無法在 Jenkins 中進行 scp

無法在 Jenkins 中進行 scp

我是詹金斯的新用戶。我正在嘗試運行 shell 腳本作為 Jenkins 建置步驟的一部分。該腳本有一個將檔案scp傳輸.tar到遠端伺服器的命令。

當我運行此腳本時,它工作正常並給出所需的輸出,但是當透過 Jenkins 執行它時,我收到錯誤:

Host key verification failed.
lost connection

直到該scp命令,腳本執行成功,然後跳過該scp步驟。

我甚至無法透過 Jenkins 到遠端伺服器的 SSH 或 SCP。

請告知這裡可以做什麼?ssh和需要安裝哪些插件scp

答案1

主機金鑰需要添加到客戶端的「known_hosts」檔案中,在您的情況下是用戶,jenkins 伺服器在其帳戶下運行。所以你需要做的是:

  1. 為 jenkins 用戶啟用 ssh 登入
  2. 以詹金斯身分登入
  3. ssh 到遠端伺服器
  4. 回答問題“是否應該添加伺服器身份..”是..

然後你就完成了。之後,腳本將能夠使用使用者的 pubkey 執行 scp。

答案2

簡而言之,您需要將 Jenkins 的使用者 ssh 金鑰新增至您嘗試以該使用者身分登入的伺服器。

細節:

登入jenkins伺服器,然後:

sudo passwd jenkins

輸入兩次你想要給 jenkins 使用者的密碼,然後:

su jenkins
cd
ssh-keygen

按 Enter 鍵查看所有選項。然後將新的 ssh 密鑰複製到要複製到的伺服器:

scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key

如果出現提示,請按「是」繼續。

然後以該使用者登入該伺服器,然後:

ssh user@server

並輸入密碼,然後

cd .ssh
ls -lah

如果沒有「authorized_keys」則:

cd .ssh
touch authorized_keys

如果「authorized_keys」檔案存在,請忽略上述步驟,然後:

cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key

退出/登出伺服器然後返回詹金斯伺服器:

ssh user@newserver

您應該直接登錄,無需提示或輸入密碼

現在在 Jenkins 中再次執行 scp 作業

答案3

我解決了這個問題。 1.我在 jenkins 用戶下創建了一個新的 shh 密鑰對。 2. 將 .pub 金鑰新增至遠端伺服器。從 jenkins 伺服器執行 ssh 時,將使用新產生的私鑰。現在 ssh 和 scp 都可以作為建置步驟的一部分。謝謝

答案4

SSH 代理插件

該插件允許您透過 Jenkins 中的 ssh-agent 提供 SSH 憑證來建置。 https://plugins.jenkins.io/ssh-agent/

如果您再次看到此錯誤,請從 Jenkins 作業執行此命令一次:

ssh -o StrictHostKeyChecking=no user@host hostname

之後,您可以簡單地從 Jenkins 作業中執行 ssh:

ssh user@host hostname

相關內容