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 目录, 放到这个目录下

用war安装,以screen启动

# 安装git
yum install git
# 添加tomcat用户
useradd tomcat
passwd tomcat
# 安装JDK
cd backup/
tar xvf jdk-11.0.8_linux-x64_bin.tar.gz 
tar xvf jdk-8u261-linux-x64.tar.gz 
cd /opt/
mkdir jdk
cd jdk/
mv ~/backup/jdk1.8.0_261 .
mv ~/backup/jdk-11.0.8 .
ln -s jdk-11.0.8 latest
vi /etc/profile.d/sh.local
## 增加内容开始
PATH=$PATH:/opt/jdk/latest/bin
## 增加内容结束

# 将jenkins war放入 /home/tomcat/run目录后
vi scripts/start_jenkins.sh 
## 内容开始
java -server -Djava.awt.headless=true -jar /home/tomcat/run/jenkins.2.277.2.war --httpPort=9090
## 内容结束

# 因为jenkins的war只能使用前台启动, 搜索到的解决方案都是用 nohup java -jar jenkins.war &, 但是这样会导致日志堆积, 估采用screen
screen -S jenkins
# 在screen session里
./scripts/start_jenkins.sh

问题和解决

启动Jenkins报NPE错误

通过安装fontconfig解决
https://github.com/AdoptOpenJDK/openjdk-docker/issues/75

yum install fontconfig

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错误了.

原文地址:https://www.cnblogs.com/milton/p/15349798.html