es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conectando agente de Jenkins: Secuencia de bytes SSH malformada

Encontré este problema cuando estaba tratando de conectar un agente de Jenkins a través de SSH. He seguido todos los pasos descritos aquí: https://acloudguru.com/blog/engineering/adding-a-jenkins-agent-node, excepto uno: en lugar de usar yum install java-1.8.0-openjdk, he utilizado apt install default-jre, lo cual al final me ha dado openjdk 11.0.13 2021-10-19. Después de intentar lanzar el agente varias veces, obtengo el siguiente error:

java.io.IOException: Malformed SSH byte string.
    at com.trilead.ssh2.packets.TypesReader.readByteString(TypesReader.java:132)
    at com.trilead.ssh2.packets.TypesReader.readMPINT(TypesReader.java:117)
    at com.trilead.ssh2.signature.RSAKeyAlgorithm.decodePublicKey(RSAKeyAlgorithm.java:113)
    at com.trilead.ssh2.signature.RSAKeyAlgorithm.decodePublicKey(RSAKeyAlgorithm.java:28)
    at com.trilead.ssh2.KnownHosts.addHostkey(KnownHosts.java:108)
    at com.trilead.ssh2.KnownHosts.initialize(KnownHosts.java:410)
    at com.trilead.ssh2.KnownHosts.initialize(KnownHosts.java:438)
    at com.trilead.ssh2.KnownHosts.<init>(KnownHosts.java:87)
    at hudson.plugins.sshslaves.verifiers.KnownHostsFileKeyVerificationStrategy.getPreferredKeyAlgorithms(KnownHostsFileKeyVerificationStrategy.java:108)
    at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:425)
    at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:421)
    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)
[01/04/22 15:30:12] Launch failed - cleaning up connection
[01/04/22 15:30:12] [SSH] Connection closed.

Por favor, ayúdame a entender qué sucede y cómo se puede resolver. Soy nuevo en Jenkins y no estoy familiarizado con Java. Buscar en Google este problema no me dio ningún resultado sensato. Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la versión de Java que tienes instalada en el nodo del agente. El mensaje de error indica que hay un problema al decodificar el algoritmo de clave pública utilizado para la verificación SSH.

    Según el mensaje de error, el complemento del esclavo SSH de Jenkins utiliza el archivo KnownHosts para la verificación de claves SSH. Este archivo almacena las claves públicas de los hosts conocidos y se puede utilizar para verificar la identidad de un servidor remoto.

    Es posible que el algoritmo de clave pública utilizado por el Jenkins master para verificar la identidad del nodo del agente sea diferente al utilizado por el nodo del agente. El mensaje de error sugiere que se está utilizando el algoritmo de clave RSA, pero no está claro si este es el algoritmo esperado por el Jenkins master.

    Para resolver este problema, puedes intentar actualizar el archivo KnownHosts en el Jenkins master para incluir la clave pública del nodo del agente, especificando manualmente el algoritmo de clave pública utilizado por el nodo del agente. También puedes intentar instalar una versión diferente de Java en el nodo del agente, como Java 8, para ver si esto resuelve el problema.

    Alternativamente, si estás utilizando una versión moderna de Jenkins, puedes utilizar el complemento SSH Pipeline Steps en lugar del complemento SSH Slave, que proporciona una forma más flexible y ligera de ejecutar comandos SSH en nodos remotos.

    Si ninguno de estos pasos resuelve el problema, puede ser útil consultar los foros de soporte de Jenkins o buscar la orientación de un experto en Jenkins.

Comments are closed.