Ant ошибка задачи scp

У меня есть одно требование: скопировать локальные файлы в удаленную систему. Я сделал следующее:

  • загрузил jsch-0.1.44.jar и скопировал в папку lib из Ant
  • установить путь и все

Мой файл сборки:

<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 ...

Любые идеи, как решить эту проблему?

Ответ 1

В соответствии с Ant scp задача docs, атрибут trust:

Это доверяет всем неизвестным узлам, если установлено к да/истине. Примечание. Если вы установите для этого значение false (по умолчанию), хост, который вы подключение должно быть указано в вашем knownhosts file, это также подразумевает что файл существует.

Атрибут trust не используется в вызове задачи, поэтому кажется, что хост (10.184.74.168) не находится в вашем файле известных хостов. Предложите добавить trust="true" или добавить хост в файл knownhosts.

Ответ 2

Убедитесь, что ваш файл ~/.ssh/known_hosts использует un-hashed hostnames; если строки начинаются с |1|base64data..., JSch оказывается неспособным их проанализировать. Создайте строки формата hostname[,hostname|ip]* ssh-keytype base64data....

См. man 8 sshd о точном формате known_hosts и советы о том, где найти общедоступный ключ хоста.