错误信息:
/var/lib/jenkins/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/lib/jenkins/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it.
Key exchange was not finished, connection is closed.
SSH Connection failed with IOException: "Key exchange was not finished, connection is closed.", retrying in 15 seconds. There are 2 more retries left.
问题原因:这个错误表明 Jenkins 在连接节点服务器时无法找到已知的主机文件(known_hosts),或者无法完成密钥交换导致连接关闭。
首先登录到Jenkins主机
1.使用以下命令创建目录:
sudo mkdir -p /var/lib/jenkins/.ssh/
2.确保目录的权限正确设置:
sudo chmod 700 /var/lib/jenkins/.ssh/
3.然后再次尝试创建 known_hosts 文件:
sudo touch /var/lib/jenkins/.ssh/known_hosts
4.最后,确保 Jenkins 用户有权限读取和写入该文件:
sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts
sudo chmod 600 /var/lib/jenkins/.ssh/known_hosts
5.创建 known_hosts 文件:
在 Jenkins 主机上以 Jenkins 用户的身份登录。
使用以下命令创建 known_hosts 文件:
sudo touch /var/lib/jenkins/.ssh/known_hosts
确保 Jenkins 用户有权限读取该文件。您可以运行以下命令更改文件的权限:
sudo chmod 644 /var/lib/jenkins/.ssh/known_hosts
将节点服务器的公钥添加到 known_hosts 文件:
6.打开终端,并以 Jenkins 用户的身份登录。
连接到节点服务器:
ssh <用户名>@<节点服务器IP>
第一次连接时,系统会询问是否要将节点服务器的公钥添加到 known_hosts 文件中。选择是,并输入 Jenkins 用户的密码。
这样一来,节点服务器的公钥就会被添加到 known_hosts 文件中。
退出节点服务器:exit
重启 Jenkins 服务:sudo systemctl restart jenkins
在完成以上步骤后,您可能需要重启 Jenkins 服务以应用更改。
sudo systemctl restart jenkins