Jenkins Controller-Agent:密钥交换未完成,连接已关闭

42fyovps  于 2023-11-17  发布在  Jenkins
关注(0)|答案(5)|浏览(131)

我想将Jenkins阿根连接到Jenkins控制器,但当尝试连接时,我得到以下错误:

[05/02/18 15:26:59] [SSH] Opening SSH connection to <IP>
Key exchange was not finished, connection is closed.
java.io.IOException: There was a problem while connecting to <IP>:22
    at com.trilead.ssh2.Connection.connect(Connection.java:818)
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1324)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:831)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:820)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Key exchange was not finished, connection is closed.
    at com.trilead.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:93)
    at com.trilead.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:230)
    at com.trilead.ssh2.Connection.connect(Connection.java:770)
    ... 7 more
Caused by: java.io.IOException: Cannot negotiate, proposals do not match.
    at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:405)
    at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:777)
    at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:489)
    ... 1 more
[05/02/18 15:26:59] Launch failed - cleaning up connection
[05/02/18 15:26:59] [SSH] Connection closed.

字符串

节点配置:

  • Start-Method:通过SSH启动代理
  • 主机名:是IP
  • 访问数据:我为SSH访问创建的用户- >公钥在代理节点上的授权密钥中

如果我在我的控制器上作为用户“jenkins”,并做一个ssh jenkins@<IP>,我可以登录没有问题(公钥是代理)。
为什么它不适用于“UI-Jenkins”。
Jenkins-版本:1.658
操作系统:Ubuntu 14.04
SSH-Slave Plugin:1.26

a5g8bdjr

a5g8bdjr1#

这就“解决”了问题:
“解决方法是在Jenkins代理的/etc/ssh/sshd_config中注解掉MAC和KexAlgorithm行,并重新启动sshd(Ubuntu上的服务ssh重新启动)
更新:截至2017-04-29,该问题已得到解决
Jenkins controller fails to connect to the agent over SSH

chy5wohz

chy5wohz2#

我想把我的经历放在这个帖子里:我的环境有一个Windows主服务器和混合的Windows和Linux代理。一个Windows代理拒绝连接到主服务器,即使在主服务器将“jenkins-agent”和其他支持文件推送到代理之后。
这个代理安装了6个不同版本的JDK和JRE。我对所有版本进行了重新安装,只重新安装了我们需要的最新JDK,并设置了JAVA_HOME。这修复了连接问题。

hgncfbus

hgncfbus3#

在目标节点上执行此命令。
sudo -i su -c 'sed -i -e“s/MACs /MACs hmac-sha1,/g”/etc/ssh/sshd_config; service sshd restart'

ryevplcw

ryevplcw4#

最近在使用Docker时遇到了这个问题
找到Java路径

/home/jenkins # which java
/opt/java/openjdk/bin/java

字符串
导出Java路径。在本例中,我使用docker-compose

...
  exp_agent:
    image: jenkins/ssh-agent:alpine
    restart: always
    environment:
      JENKINS_AGENT_SSH_PUBKEY: $ENV_JENKINS_AGENT_SSH_PUBKEY
      JAVA_HOME: $ENV_JAVA_HOME
    container_name: jenkins-ssh-agent
    ports:
      - 22:22
    networks:
      - jenkins
...


主机仍然抱怨Java的路径,因为/opt/java/openjdk/bin/java不在预期的路径中

...
[12/04/21 11:44:07] [SSH] Checking java version of /usr/bin/java
...


在java路径和docker容器中的一个预期路径之间创建一个符号链接(这可以在Dockerfile中自动完成)

ln -s /opt/java/openjdk/bin/java /usr/bin/java

tyky79it

tyky79it5#

也有同样的问题,通过将从服务器的SSH指纹添加到主服务器来解决。
从master运行此命令:

ssh-keyscan -H <SLAVE_IP/SLAVE_HOSTNAME> >> /var/lib/jenkins/.ssh/known_hosts

字符串
或日志输出中显示的任何known_hosts文件路径

相关问题