2011-06-15 15 views
13

Tengo un requisito: copiar los archivos locales en el sistema remoto. he hecho lo siguiente:Error de la tarea Ant scp

  1. descargado jsch-0.1.44.jar y copiado a la carpeta lib de hormiga
  2. establecer la ruta y cada cosa

Mi BuildFile es:

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

Cuando corro hormiga, me sale este error:

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

Alguna idea de cómo resolver esto?

+0

Valdría la pena editar el cuerpo de su pregunta para incluir el archivo de compilación. También puede formatear códigos, registros, etc., para que sean un poco más fáciles de leer. –

Respuesta

33

De acuerdo con los documentos Ant scp task, trust atributo:

This trusts all unknown hosts if set to yes/true. Note If you set this to false (the default), the host you connect to must be listed in your knownhosts file, this also implies that the file exists.

El atributo trust no se utiliza en su llamada tarea, por lo que parece que el anfitrión (10.184.74.168) no se encuentra en su archivo knownhosts. Sugiera que agregue trust="true", o agregue el host al archivo knownhosts.

+3

Lo he dado también ... sigue mostrando el mismo error – user617228

+0

@ user617228 ¿el host ya está en sus known_hosts pero con una clave de host diferente? intente eliminar todas las entradas para este host en los known_hosts y pruebe con trust = "true" – oers

+0

@Martin clayton: Impresionante, esto funciona para mí –

3

Asegúrese de que su archivo ~/.ssh/known_hosts utiliza nombres de host sin hash; si las líneas comienzan en |1|base64data..., JSch parece incapaz de analizarlas. Crea líneas del formato hostname[,hostname|ip]* ssh-keytype base64data....

Consulte man 8 sshd en el formato exacto de known_hosts, y consejos sobre dónde encontrar la clave pública del host.

+0

Su pista me ayudó a resolver mi problema. Sin embargo, tuve que generar el archivo known_hosts manualmente a través de la interfaz JSch. Parece que JSch es bastante selectivo en los formatos admitidos. –

Cuestiones relacionadas