我是詹金斯的新用戶。我正在嘗試運行 shell 腳本作為 Jenkins 建置步驟的一部分。該腳本有一個將檔案scp
傳輸.tar
到遠端伺服器的命令。
當我運行此腳本時,它工作正常並給出所需的輸出,但是當透過 Jenkins 執行它時,我收到錯誤:
Host key verification failed.
lost connection
直到該scp
命令,腳本執行成功,然後跳過該scp
步驟。
我甚至無法透過 Jenkins 到遠端伺服器的 SSH 或 SCP。
請告知這裡可以做什麼?ssh
和需要安裝哪些插件scp
?
答案1
主機金鑰需要添加到客戶端的「known_hosts」檔案中,在您的情況下是用戶,jenkins 伺服器在其帳戶下運行。所以你需要做的是:
- 為 jenkins 用戶啟用 ssh 登入
- 以詹金斯身分登入
- ssh 到遠端伺服器
- 回答問題“是否應該添加伺服器身份..”是..
然後你就完成了。之後,腳本將能夠使用使用者的 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