私のJenkinsマスターサーバーはローカルで実行しており、スレーブサーバーはAWSで実行しています。 Centos 7 EC2 仮想マシンです。
Jenkinsがscpを介してSlave.jarファイルをプッシュしようとすると、次のエラーメッセージで失敗します。
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')
提供されるソリューションSSHトンネルエラー:「チャンネル1:オープン失敗:管理者禁止:オープン失敗」私には適していません。
答え1
確認または解決できるいくつかの点は次のとおりです。
- JenkinsサーバーがSSH経由ですべてのスレーブサーバーにアクセスできることを確認するには、AWSのセキュリティグループを確認してください。すでに準備ができているようですが、確認してみる価値があります。
- Jenkinsサーバーにログインし、コマンドラインから直接Slaverサーバーに接続してみてください。この方法でエラーなく接続できることを確認してください。次に、接続するユーザーがJenkinsが使用したいユーザーと同じであることを確認してください。出力に「スレーブの '/home/nutanix'にSlave.jarをコピーできません」と表示されます。内部にLinux インスタンス接続に関する AWS ドキュメント、CentOSシステムのユーザー名は次のとおりです。セントース。 Jenkinsがそのユーザー名を使用するように構成されており、そのユーザーとしてログインするために必要なキーにアクセスできることを確認してください。
- 使用を検討してくださいAmazon EC2プラグインAWS のスレーブに接続するために使用されます。このプラグインを使用すると、ほとんどの設定が構成で完了するため、作業レベルで心配する必要はありません。さらに、スレーブは必要に応じてスピンアップおよびダウンするため、AWS コストを低く抑えることができます。