Ant scp任务失败

时间:2011-06-15 10:18:24

标签: ant scp

我有一个要求:将本地文件复制到远程系统。 我做了以下事情:

  1. 下载了jsch-0.1.44.jar并复制到Ant的lib文件夹
  2. 设置路径和每件事
  3. 我的构建文件是:

    <project name="ImportedBuild" default="all">
      <target name="copyFileToRemote">
        <echo>2222222222 copyFileToRemote Examples:::::::::::::</echo>
        <scp file="sample.txt" todir="${username}:${password}@${hostname}:/shared"/>
      </target>
    </project>
    

    当我运行Ant时,我收到此错误:

    BUILD FAILED com.jcraft.jsch.JSchException: reject HostKey: 10.184.74.168
        at com.jcraft.jsch.Session.checkHost(Session.java:712)
        at com.jcraft.jsch.Session.connect(Session.java:313)
        at com.jcraft.jsch.Session.connect(Session.java:154)
        at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:212)
        at org.apache.tools.ant.taskdefs.optional.ssh.Scp.upload(Scp.java:291)
        at org.apache.tools.ant.taskdefs.optional.ssh.Scp.execute(Scp.java:203)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        ... etc ...
    

    有任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:35)

根据Ant scp task文档,trust属性:

  

如果设置,则信任所有未知主机   是/真。注意如果将其设置为   false(默认值),主持人你   连接到必须列在你的   knownhosts文件,这也暗示着   该文件存在。

在您的任务调用中未使用trust属性,因此主机(10.184.74.168)似乎不在您的knownhosts文件中。建议您添加trust="true",或将主机添加到knownhosts文件。

答案 1 :(得分:3)

确保您的~/.ssh/known_hosts文件使用的是未散列的主机名;如果行开始|1|base64data...,则JSch似乎无法解析它们。创建格式hostname[,hostname|ip]* ssh-keytype base64data...

的行

请参阅man 8 sshd有关known_hosts的确切格式,以及有关在何处查找主机公钥的提示。