1. 程式人生 > >Jenkins Pipeline執行shell指令碼遠端連線主機時 Host key verification failed

Jenkins Pipeline執行shell指令碼遠端連線主機時 Host key verification failed

                      --昨夜西風凋碧樹,獨上高樓,望盡天涯路

  • 錯誤描述

當Jenkins Pipeline通過執行shell指令碼,遠端連線伺服器釋出專案的時候出現校驗失敗:

Jenkins已經配置了免密登陸遠端伺服器,以及在Jenkins 宿主機中通過root使用者執行指令碼是可以進行免密登陸遠端主機的

配置免密登陸 戳 :Here

  • 原因

Why?root使用者登入Jenkins宿主機可以執行指令碼,通過Jenkins提示校驗失敗。

經過排查以及分析,發現Jenkins進行持續整合和持續釋出的時候是通過Jenkins使用者來進行這些步驟的,由於免密登陸是通過root使用者配置的,所以對Jenkins使用者是不生效的。下面我們給Jenkins使用者配置免密登陸:

由於Jenkins使用者預設是無法登陸的,所以首先通過如下命令:

sudo vim /etc/passwd

 修改Jenkins中的/bin/false為/bin/bash:

這時執行su - jenkins 發現可以切換使用者,但是命令提示符的使用者名稱顯示的是 -bash-4.1$。

執行 vim ~/.bash_profile 修改環境變數,新加程式碼:

export PS1='[\[email protected]\h \W]\$'

載入修改完的bash_profile:

source ~/.bash_profile

之後通過su jenkins切換到jenkins使用者,正常。

下面通過jenkins使用者設定免密登陸(和root一樣):戳 Here

相關推薦

Jenkins Pipeline執行shell指令碼遠端連線機時 Host key verification failed

                      --昨夜西風凋碧樹,獨上高樓,望盡天涯路 錯誤描述 當Jenkins Pipeline通過執行shell指令碼,遠端連線伺服器釋出專案的時候出現校驗失敗: Jenkins已經配置了免密登陸遠端伺服器,以及在Jenki

DevOps | Jenkins pipelineshell指令碼執行docker許可權報錯

                      --昨夜西風凋碧樹,獨上高樓,望盡天涯路 採用Jenkins Pipeline流水線方式,通過Pipeline script中執行shell指令碼的方式構建docker映象的時候出現如下情況 錯誤: Got permissio

使用ssh連線伺服器IP時報錯Host key verification failed

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

遠端伺服器系統升級後,使用SSH登陸不上。報錯為Host key verification failed.

主要原因是:系統升級後會重新生成一份主機金鑰,然而自己的機子中儲存的確是之前的金鑰,與遠端主機發送RSA金鑰的指紋不同。所以將自己機子中的金鑰刪除即可。 報錯如下: 1.刪除known_host

SSH連線失敗,報錯Host key verification failed——原理和解決方法

##原因,當時用ssh命令遠端連線sshd服務的時候。連線過程是需要認證的,以保證連線的安全和資料傳輸的加密。 客戶端ssh連線服務端sshd時,服務端根據自己的私鑰生成公鑰 (身份驗證使用公鑰加密演算法實現——公鑰加密私鑰解密),並傳送給客戶端ssh。 客戶端ssh命令接收服務端的公鑰,(第一次連線時,連線

jenkins構建並遠端釋出後執行shell指令碼

由於jenkins遠端釋出war檔案到不同環境下的tomcat下時,會先刪除同名檔案後再進行遠端拷貝,此時保留在本地的配置檔案需收到copy。 為實現自動化釋出,特在釋出後執行shell指令碼,遠端c

Java 連線遠端Linux 伺服器執行 shell 指令碼檢視 CPU、記憶體、硬碟資訊

/* * Written by wei.Li and released to the public domain * Welcome to correct discussion as explained at * * ------------------------------------------

shell 指令碼執行python指令碼連線hive提交資料寫入表

使用說明 1.cd /opt/zy 在這個目錄下以root使用者許可權執行命令 2. 在SAP查詢的時候 Tcode:ZMMR0005 Purchase Org * PO Creating:2017/3/1 (開始日期) 2017/

jenkins執行shell指令碼

用過Jenkins的都知道,在Build配置那裡有一個Add buld step, 有這樣兩個選項: 1. Execute Windows batch command 2. Execute shell 第1個是執行windows命令,第2個是執行shell指令碼。

Java利用ssh工具遠端執行shell指令碼

1.首先下載ganymed-ssh2.jar   http://www.ganymed.ethz.ch/ssh2 2.SSHUtil工具類 import java.io.BufferedReader; import java.io.IOException; import j

jenkins自動部署中執行shell指令碼啟動tomcat,但是tomcat不啟動的問題

Jenkins會在構建完成後使用processTreeKiller殺掉了所有子程序,而且這是Jenkins的預設行為。其實回頭來看這個問題,就發現Jenkins的做法非常合理。當一次build異常結束,或被人終止時,必然需要結束所有這次build啟動的子程序。下面的link提供了更多細節,以及解決方法。htt

jenkins 以root使用者執行Shell指令碼並不需要輸入密碼

預設所有的sudoer都需要在tty是執行,由於jenkins Shell不是在tty上執行先把預設tty關閉,然後開啟只有jenkins不需要tty,其它都需要#Defaults    requirettyDefaults:apache !requiretty然後為jenk

解決Jenkins執行shell指令碼時出現“sudo: no tty present and no askpass program specified”的錯誤

今天使用jenkins job執行呼叫指令碼執行CD task時,出現了“sudo: no tty present and no askpass program specified”的問題,網上找了很多,但大多都沒有解決我的問題。 問題描述: 寫好shell指令碼後,直接

Java實踐 — SSH遠端執行Shell指令碼

1. SSH簡介         SSH是Secure Shell的縮寫,一種建立在應用層和傳輸層基礎上的安全協議。SSH在連線和傳送過程中會加密所有資料,可以用來在不同系統或者伺服器之間進行安全連線。SSH提供兩種的安全驗證方式:基於密碼的認證和基於密匙的認證。其中,基於

shell指令碼實現連線遠端伺服器(ECS)

本篇文章主要使用expect指令碼來實現自動連線遠端伺服器並實現互動,不會大篇幅介紹expect的用法,有興趣的讀者可以自己瞭解,expect是個很強大的實現自動化互動的工具哦~~ 程式碼示

jenkins部署maven專案構建後部署前執行shell指令碼

只需要配置一個外掛即可 去https://plugins.jenkins.io/網站搜尋Post build task外掛(第一個應該就是),下載下來安裝到jenkins中並重啟jenkins,在專案配置中可以看到該選項 下面是我的配置(僅供參考),每當檢測到專案編譯資訊

如何讓程式在linux伺服器下一直執行(關閉遠端連線後仍然繼續執行

一、為什麼要使程式在後臺執行 最近剛剛入手在做一個遠端通訊的專案,利用套接字實現長連線通訊。那麼問題來了,我的服務端程式怎麼才能一直在伺服器上執行以達到隨時監測使用者請求的目的呢?查了幾篇部落格,解決了,記一下筆記。程式在後臺跑有以下2個好處: 1:我們遠端連線的之一端並不影響伺服器服務

學習Linux shell指令碼連線字串的方法

這篇文章主要介紹了Linux shell指令碼中連線字串的方法,如果想要在變數後面新增一個字元,可以用一下方法: 程式碼如下: $value1=home $value2=${value1}"=" echo $value2 把要新增的字串變數新增{},並且需要把$放到外面。 這樣輸出的結果

使用crontab定時執行shell指令碼

原帖地址:http://blog.chinaunix.net/uid-429659-id-4510419.html 使用crontab你可以在指定的時間執行一個shell指令碼或者一系列Linux命令。例如系統管理員安排一個備份任務使其每天都執行 入門 # cronta

怎麼在後臺執行shell指令碼

後臺執行指令碼 執行指令碼test.sh:./test.sh 中斷指令碼test.sh:ctrl+c 在1的基礎上將執行中的test.sh,切換到後臺並暫停:ctrl+z 執行ctrl+z後,test.sh在後臺是暫停狀態(stopped),使用命令:bg number讓