Não é possível executar tarefas do Jenkins Slave no AWS EC2 Centos 7 VM

0

Tenho o Jenkins Master Server em execução e meus escravos estão em execução na AWS. É o Centos 7 EC2 VM.

Quando o Jenkins tenta enviar o arquivo slave.jar pelo scp, ele falha com a seguinte mensagem de erro:

    java.io.IOException: Could not open channel (state:4)
    at com.trilead.ssh2.channel.ChannelManager.ioException(ChannelManager.java:1543)
    at com.trilead.ssh2.channel.ChannelManager.waitUntilChannelOpen(ChannelManager.java:122)
    at com.trilead.ssh2.channel.ChannelManager.openSessionChannel(ChannelManager.java:574)
    at com.trilead.ssh2.Session.<init>(Session.java:42)
    at com.trilead.ssh2.Connection.openSession(Connection.java:1145)
    at com.trilead.ssh2.SFTPv3Client.<init>(SFTPv3Client.java:99)
    at com.trilead.ssh2.SFTPv3Client.<init>(SFTPv3Client.java:119)
    at hudson.plugins.sshslaves.SFTPClient.<init>(SFTPClient.java:43)
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJar(SSHLauncher.java:1138)
    at hudson.plugins.sshslaves.SSHLauncher.access$400(SSHLauncher.java:148)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:833)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:810)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: The server refused to open the channel (SSH_OPEN_ADMINISTRATIVELY_PROHIBITED, 'open failed')
    at com.trilead.ssh2.channel.Channel.setReasonClosed(Channel.java:331)
    at com.trilead.ssh2.channel.ChannelManager.msgChannelOpenFailure(ChannelManager.java:1392)
    at com.trilead.ssh2.channel.ChannelManager.handleMessage(ChannelManager.java:1484)
    at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:809)
    at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:502)
    ... 1 more
java.io.IOException: Could not copy slave.jar into '/home/nutanix' on slave
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJarUsingSCP(SSHLauncher.java:1222)
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJar(SSHLauncher.java:1183)
    at hudson.plugins.sshslaves.SSHLauncher.access$400(SSHLauncher.java:148)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:833)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:810)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Could not open channel (state:4)
    at com.trilead.ssh2.channel.ChannelManager.ioException(ChannelManager.java:1543)
    at com.trilead.ssh2.channel.ChannelManager.waitUntilChannelOpen(ChannelManager.java:122)
    at com.trilead.ssh2.channel.ChannelManager.openSessionChannel(ChannelManager.java:574)
    at com.trilead.ssh2.Session.<init>(Session.java:42)
    at com.trilead.ssh2.Connection.openSession(Connection.java:1145)
    at com.trilead.ssh2.Connection.exec(Connection.java:1566)
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJarUsingSCP(SSHLauncher.java:1216)
    ... 8 more
Caused by: java.io.IOException: The server refused to open the channel (SSH_OPEN_ADMINISTRATIVELY_PROHIBITED, 'open failed')

A solução fornecida em Erro de encapsulamento SSH : "canal 1: falha na abertura: administrativamente proibido: falha na abertura" não funcionou para mim.

    
por Jeevan Dongre 20.02.2018 / 15:46

1 resposta

0

Existem algumas coisas que você pode verificar ou tentar solucionar isso:

  1. Verifique seus grupos de segurança na AWS para garantir que seu servidor Jenkins possa acessar quaisquer servidores escravos via SSH. Eu estou supondo que você já tem isso no lugar, mas vale a pena um cheque.
  2. Faça login no servidor Jenkins e tente se conectar ao servidor slaver diretamente da linha de comando. Verifique se você consegue se conectar dessa maneira sem erros. Em seguida, confirme se o usuário ao qual você está se conectando é o mesmo que o Jenkins está tentando usar. Na sua saída, eu vejo "Não foi possível copiar o slave.jar para '/ home / nutanix' no slave". Na documentação da AWS para conexão a uma instância do Linux , o nome de usuário dos sistemas CentOS é < em> centos . Certifique-se de que o Jenkins esteja configurado para usar esse nome de usuário e tenha acesso à chave necessária para efetuar login como esse usuário.
  3. Considere usar o plug-in do Amazon EC2 para conectar-se a escravos no AWS. Com esse plugin, grande parte da configuração é feita em uma configuração e você não precisa se preocupar com isso no nível do trabalho. Além disso, os escravos serão ativados e desativados sob demanda, mantendo baixos os custos da AWS.
por 15.03.2018 / 04:01