【问题标题】:Exception when using sshexec in ant 1.10在 ant 1.10 中使用 sshexec 时出现异常
【发布时间】:2019-06-22 01:34:51
【问题描述】:

我正在尝试使用 Ant 脚本部署 PHP 应用程序。我已经把所有必要的 jars 都放在了库中:即 ant-jsch-1.8.1.jar、jsch-0.1.55.jar

在我的脚本中,我声明了 sshexec 和 scp,如下所示:

<path id="jsch.class.path">
      <pathelement location="lib/ant-jsch-1.8.1.jar" />
      <pathelement location="lib/jsch-0.1.55.jar" />
    </path>
    <taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="jsch.class.path" />
    <taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec" classpathref="jsch.class.path" />

当在 Jenkins 中执行构建时,尽管公钥的位置正确,但我会收到这些错误事件:

[sshexec] Caught exception: java.io.FileNotFoundException: /home/jenkins/.ssh/id_dsa   (No such file or directory)

[sshexec] Caught exception: java.io.FileNotFoundException: /home/jenkins/.ssh/id_dsa   (No such file or directory)

[scp] Caught exception: java.io.FileNotFoundException: /home/jenkins/.ssh/id_dsa   (No such file or directory)

奇怪的是,当我在我的机器上本地运行构建脚本时,它运行良好。

任何帮助将不胜感激。

【问题讨论】:

  • 您使用主节点还是其他节点来运行它?如果您使用不同的,您的 ssh 文件存储在哪里,在节点上还是在主节点上?
  • biruk1230 “使用主节点或不同节点”是什么意思?我在 jenkins 服务器上运行脚本,它具有所有必需的库文件。编译后的文件也在同一个工作区中。
  • 我的意思是,Jenkins 服务器(又名“主服务器”)通常也很少有额外的节点来运行项目。通常问题是您的文件位于 master 上,但您在不同的节点上运行作业。根据您的回答,我假设您只有一个没有其他节点的 Jenkins 主服务器,所以我只能建议仔细检查您目录中的文件名,也许您有 id_dsa.pubid_rsa 而不是 id_dsa 文件在/home/jenkins/.ssh 目录中。
  • 谢谢..我确实有错字,应该是 id_rsa。不幸的是它仍然有同样的错误,除了这次文件名是'id_rsa'。
  • 我终于找到了问题所在。我有一个变量保存到私钥的路径,但字符串有一个额外的空格或字符,蚂蚁感到困惑。我替换了变量并将路径直接放入,它可以工作。感谢您的帮助。

标签: jenkins build ant


【解决方案1】:

问题是我有一个保存私钥路径的变量,该字符串可能有一个额外的空格或字符,ANT 感到困惑。我用私钥的直接路径替换了变量,它起作用了。为了重用该变量,我复制了路径并将其分配给运行命令中的同一变量。

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多