【问题标题】:Jenkins SSH slave fails to create /home/<user>/jenkinsJenkins SSH slave 无法创建 /home/<user>/jenkins
【发布时间】:2021-08-26 20:36:28
【问题描述】:

在 Jenkins 上配置 ssh 从站时,它在 ec2 实例上运行,当我单击“启动从站代理”时收到以下错误消息。

[08/06/14 18:41:46] [SSH] Opening SSH connection to ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com:22.
[08/06/14 18:41:46] [SSH] Authentication successful.
[08/06/14 18:41:46] [SSH] The remote users environment is:
[08/06/14 18:41:46] [SSH] Starting sftp client.
[08/06/14 18:41:46] [SSH] SFTP failed. Copying via SCP.
[08/06/14 18:41:46] [SSH] Remote file system root /home/<user>/jenkins does not exist. Will try to create it...
Failed to create /home/<user>/jenkins
[08/06/14 18:41:46] [SSH] Copying latest slave.jar...
hudson.util.IOException2: Could not copy slave.jar into '/home/<user>/jenkins' on slave
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJarUsingSCP(SSHLauncher.java:967)
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJar(SSHLauncher.java:926)
    at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:596)
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:228)
    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:744)
Caused by: java.io.IOException: Error during SCP transfer.
    at com.trilead.ssh2.SCPClient.put(SCPClient.java:523)
    at hudson.plugins.sshslaves.SSHLauncher.copySlaveJarUsingSCP(SSHLauncher.java:965)
    ... 7 more
Caused by: java.io.IOException: Remote scp terminated unexpectedly.
    at com.trilead.ssh2.SCPClient.readResponse(SCPClient.java:50)
    at com.trilead.ssh2.SCPClient.sendBytes(SCPClient.java:140)
    at com.trilead.ssh2.SCPClient.put(SCPClient.java:519)
    ... 8 more
[08/06/14 18:41:46] [SSH] Connection closed.

该节点的Jenkins配置如下:

请注意,我设置了 JavaPath 属性是因为 Jenkins“无法确定 Java 的 Java 版本”(这是我收到的错误消息)

知道如何解决这个问题吗?谢谢

【问题讨论】:

  • 将文本&lt;user&gt; 替换为实际存在的内容?
  • 代表什么?您希望使用它做什么?
  • 在我的例子中 代表 ec2-user,但它可以是任何运行 jenkins ssh slave 的用户
  • 我也遇到了同样的问题,@PapelPincel 有什么解决办法吗?
  • @rohit_kadam 抱歉,我无法再访问 jenkins 服务器了。我希望我能帮忙

标签: linux ssh jenkins amazon-ec2


【解决方案1】:

我也有同样的问题。阅读以下帖子talking about new version 后,我意识到我正在使用的 SSH 插件有问题。

所以我访问了管理插件 --> 已安装 --> 搜索了“SSH”(通过删除选择禁用了与 SSH 相关的客户端)
基本上你需要:

  • 已禁用 - SSH 从属插件(可能与 Jenkins 一起提供)
  • 添加了 SSH 插件(2.4 版)。

这解决了这个问题,我在本文档中显示的第 6 步 JENKINS-SETTING UP MASTER SLAVE ENVIRONMENT 中显示的其他设置之后已经成功连接。 (slave.jar -jnlpUrl....)
希望这对将来的人有所帮助。

【讨论】:

    【解决方案2】:

    您需要在用户有权访问的 ec2 实例上提供有效路径。

    【讨论】:

      【解决方案3】:

      我遇到了同样的事情,没有环境变量 远程用户环境是: (空的) . . .

      我为 jenkins 用户设置了一个新的主目录(例如:/jenkinsFolder),并在 /etc/passwd 中为 jenkins 启用了 shell(它已被禁用) 然后我可以在启动从属设备时看到环境变量。

      【讨论】:

        猜你喜欢
        • 2017-04-19
        • 2015-07-28
        • 1970-01-01
        • 2017-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-14
        相关资源
        最近更新 更多