我有一个要求:将本地文件复制到远程系统。 我做了以下事情:
我的构建文件是:
<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 ...
有任何想法如何解决这个问题?
答案 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的确切格式,以及有关在何处查找主机公钥的提示。