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 и советы о том, где найти общедоступный ключ хоста.