在搭建好的 Jenkins Server 的控制面板上添加 Salve Agent 节点的时候发生了下面的错误

Checking Java version in the PATH
openjdk version "1.8.0_345"
OpenJDK Runtime Environment (build 1.8.0_345-b01)
OpenJDK 64-Bit Server VM (build 25.345-b01, mixed mode)
[11/19/22 04:35:32] [SSH] Checking java version of /home/shutang/jenkins/jdk/bin/java
Couldn't figure out the Java version of /home/shutang/jenkins/jdk/bin/java
bash: /home/shutang/jenkins/jdk/bin/java: No such file or directory

[11/19/22 04:35:32] [SSH] Checking java version of java
[11/19/22 04:35:32] [SSH] java -version returned 1.8.0_345.
[11/19/22 04:35:32] [SSH] Starting sftp client.
[11/19/22 04:35:33] [SSH] Copying latest remoting.jar...
Source agent hash is 8D575C4C8219E6AB2039295EC545C6C3. Installed agent hash is 8D575C4C8219E6AB2039295EC545C6C3
Verified agent jar. No update is necessary.
Expanded the channel window size to 4MB
[11/19/22 04:35:33] [SSH] Starting agent process: cd "/home/shutang/jenkins" && java  -jar remoting.jar -workDir /home/shutang/jenkins -jar-cache /home/shutang/jenkins/remoting/jarCache
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
Agent JVM has terminated. Exit code=1
[11/19/22 04:35:33] Launch failed - cleaning up connection
[11/19/22 04:35:33] [SSH] Connection closed.
Searching for www.datang001.com in /var/jenkins_home/.ssh/known_hosts
Searching for www.datang001.com:22 in /var/jenkins_home/.ssh/known_hosts
[11/19/22 04:35:44] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host and its associated key is added to the Known Hosts file.
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 3 more retries left.
Searching for www.datang001.com in /var/jenkins_home/.ssh/known_hosts
Searching for www.datang001.com:22 in /var/jenkins_home/.ssh/known_hosts
[11/19/22 04:35:59] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host and its associated key is added to the Known Hosts file.
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.
Searching for www.datang001.com in /var/jenkins_home/.ssh/known_hosts
Searching for www.datang001.com:22 in /var/jenkins_home/.ssh/known_hosts
[11/19/22 04:36:14] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host and its associated key is added to the Known Hosts file.
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 1 more retries left.
Searching for www.datang001.com in /var/jenkins_home/.ssh/known_hosts
Searching for www.datang001.com:22 in /var/jenkins_home/.ssh/known_hosts
[11/19/22 04:36:29] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host and its associated key is added to the Known Hosts file.
Key exchange was not finished, connection is closed.
ERROR: Connection is not established!
java.lang.IllegalStateException: Connection is not established!
	at com.trilead.ssh2.Connection.getRemainingAuthMethods(Connection.java:988)
	at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPasswordAuthenticator.canAuthenticate(TrileadSSHPasswordAuthenticator.java:83)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1812)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
	at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:222)
	at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:173)
	at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:881)
	at hudson.plugins.sshslaves.SSHLauncher.lambda$launch$0(SSHLauncher.java:434)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)

通过查看 Jenkins 官网提供的信息如下

Beginning with Jenkins 2.357 (released on June 28, 2022) and the forthcoming
2.361.1 LTS release, Jenkins requires Java 11 or newer. Additionally, beginning
with Jenkins 2.355 (released on June 14, 2022) and Jenkins 2.346.1 LTS (released
on June 22, 2022), Jenkins supports Java 17. Plugins have already been prepared
in JENKINS-68446. Use the Plugin Manager to upgrade all plugins before and after
upgrading to Jenkins 2.357.

可以知道 Slave Agent 上的 JDK1.8 环境版本与 Jenkins Master Server 端的版本不匹配,我部署的 Jenkins Server2.361.2,因此需要 Slave Agent 上提供的应该是 JDK11 或者更新的版本。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐