当前位置: 首页 > 知识库问答 >
问题:

Jenkins master无法通过SSH连接到从机

邹坚壁
2023-03-14

Jenkins master运行在Amazon实例上,从机设置在专用的Soyoustart机器上。工作正常,直到需要重做从属设置:重新安装OS,安装Java,向从属authorized_keys添加masters key,并删除/再次添加masters known_hosts中的从属。为从机设置新的凭据,并在Jenkins master中配置节点,但它无法连接到从机。

设置是相同的,并且一直在与其他从机一起工作,没有打嗝。唯一不同的是,这一次新的从机是与旧机相同的具有IP的机器。

可以从CLI从主服务器ssh到从服务器(用占位符替换了文件名和从IP):$ssh-i Jenkins@

[05/17/15 07:30:31] [SSH] Opening SSH connection to <slave-ip>.
Key exchange was not finished, connection is closed.
ERROR: Unexpected error in launching a slave. This is probably a bug in Jenkins.
java.lang.IllegalStateException: Connection is not established!
at com.trilead.ssh2.Connection.getRemainingAuthMethods(Connection.java:1030)
at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.getRemainingAuthMethods(TrileadSSHPublicKeyAuthenticator.java:88)
at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.canAuthenticate(TrileadSSHPublicKeyAuthenticator.java:80)
at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:207)
at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:169)
at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1173)
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:701)
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:696)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[05/17/15 07:30:31] Launch failed - cleaning up connection
[05/17/15 07:30:31] [SSH] Connection closed.
    null

共有1个答案

史烨
2023-03-14

我使用官方Docker映像运行Jenkins master,它使用OpenJDK8,不需要安装JCE。

显然,这是Jenkins/SSH安全性中一个尚未解决的问题。

我目前的解决办法是注释掉Jenkins Slave的/etc/ssh/sshd_config中的MacsKexAlgorithm行,并重新启动sshd(Ubuntu上的服务ssh restart)

 类似资料:
  • 我有两台机器:machine foo()运行redis服务器,而machine bar()运行通过Jedis连接到foo的java应用程序。当给jedis提供地址时,一切都很好。 但是我不信任foo和bar之间的路由器,redis也不支持SSL。因此,我设置了一个从bar到foo:的ssh隧道 现在,从bar中,我可以直接在或通过隧道在成功地telnet到foo上的redis。对于jedis,如果

  • 在尝试应用terraform计划时,我得到一个不加起来的ssh错误: SSH:握手失败:SSH:密钥交换没有通用算法;提供的客户端:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1 diffie-hellman-grou

  • 我无法通过 SSH 连接到我的 EC2 实例 - 我收到超时错误。我检查了安全组,以确保 SSH 流量正常工作。我检查了路由表,并确保它们已连接到互联网网关。一小时前,我能够通过SSH连接到实例中,但现在已经没有了。我正在通过腻子连接。在使用ec2-user@domain之前,我遇到了相同的超时连接问题,我只需在Putty的主机名字段中输入IP地址即可解决。在这一点上,我能够毫无问题地连接。然后,

  • 我正在尝试使用ngrok通过SSH(公钥认证)从远程计算机通过互联网连接到Windows用户。但显然不起作用。 以下是我所做的。 我在windows上安装并激活了SSH。 我生成了公钥文件,并从发送到远程机器进行ssh。 我在SSH设置文件“C:\ProgramData\SSH\sshd\u config”中更改/添加了以下行 我重新启动了ssh服务器以应用设置更改。 我安装了ngrok并运行ng

  • 我在某个主机上运行PostgreSQL服务器。此服务器不对外开放(只允许来自的连接)。我可以通过ssh(使用公钥)以身份登录该主机: 然后我可以对特定用户运行查询。 我需要在这里输入用户的sudo密码。我无法以用户身份连接,也不知道他的密码。我也不能作为用户访问数据库。 现在为了简化开发,我想设置从本地机器到pgserver的ssh隧道: 问题是,虽然可以访问服务器,但他没有访问数据库的权限

  • 问题内容: 我想创建以下基础结构流: 使用Docker如何实现? 问题答案: 首先,您需要在要ssh- in的映像中安装SSH服务器。您可以对安装了ssh服务器的所有容器使用基础映像。然后,您只需要运行每个容器,即可将ssh端口(默认为22)映射到主机端口(镜像中的远程服务器)到一个端口。即: 然后,如果可以从外部访问主机的端口52022和53022,则可以使用主机的ip(远程服务器)通过ssh在