1. 程式人生 > 其它 >Jenkins安裝和Host key verification failed問題的處理

Jenkins安裝和Host key verification failed問題的處理

在Centos7上安裝的Jenkins 2.303.1

安裝

因為新版本的Jenkins的war是用java -jar啟動, 並且無法後臺執行, 所以要麼通過screen建立一個session來執行war, 要麼就直接按官網的步驟安裝為服務. 下面是安裝為服務的步驟:

yum install wget
sudo wget -O /etc/yum.repos.d/jenkins.repo     https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum upgrade
yum install epel-release java-11-openjdk-devel
yum install jenkins
systemctl status jenkins
systemctl is-enabled jenkins

瀏覽器訪問後, 用提示檔案的管理員密碼登入, 選擇預設的外掛安裝

這樣安裝的Jenkins, 會建立一個jenkins使用者,

[root@vm_00 ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
jenkins:x:997:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false

可以看到對應的工作目錄在 /var/lib/jenkins
在Jenkins中建立的專案目錄, 就在 /var/lib/jenkins/jobs
在構建中需要用到的settings.xml, 可以新建 /var/lib/jenkins/settings 目錄, 放到這個目錄下

問題和解決

SSH Agent 出現 Host key verification failed

首先確認

  1. Jenkins的Git使用的ssh, 不需要預先記錄known_hosts, 配置好就可以直接用
  2. SSH Agent必須要先在命令列下訪問一下對方IP, 記錄了known_hosts後, 才能正常使用

因為安裝為服務的Jenkins使用的是jenkins使用者, 而且是/bin/false的使用者, 不能像普通使用者那樣登入然後ssh一下對方IP, 你需要按以下方式處理

# 以root或sudo user身份, 切換到jenkins使用者
su -s /bin/bash jenkins
# 前往jenkins的home目錄
cd /var/lib/jenkins/
# 檢視.ssh下是否已經有known_hosts, 有的話, 是什麼內容, 正常情況下, 這時候是沒有對應IP記錄的
cd .ssh/
more known_hosts 
# 訪問一下對應IP, 記錄公鑰
ssh 192.168.123.123
# 再次檢視, 應該就有記錄了
more known_hosts

在上面的操作之後, 再執行任務, SSH Agent就不會報Host key verification failed錯誤了.