Ant SCP任务不起作用 - 我可以使用cygwin scp

时间:2011-09-21 02:12:52

标签: ant maven scp jsch

请为我在工作中遇到的问题提供专家选择..

  1. Ant SCP任务不起作用 - 我可以使用cygwin scp。

  2. 本地环境:Windows 7 64位,Jdk 1.6.0.24,Ant-1.8.2(获取ant可选依赖项),maven 2(usign ant run plugin),jsch-0.1.44 远程环境:VM Labmanager 4.0,Windows Server 2008 - R2,SSH-2.0-OpenSSH_5.8,JDK 1.6.0.24

  3. 我已将密码验证设置为yes,并在远程主机上重新启动sshd。

  4. Maven的目标如下。 (顺便说一句,我也执行了相同的ANT目标,因此Ant和Maven使用jsch-0.1.44和jsch-0.1.42给出了相同的结果)

    <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>copy-installer</id>
            <phase>process-resources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <scp file="readme.txt"  todir="devlocal@dev-jboss02.com:/home/devlocal"     password="password" trust="true"    verbose="true"  port="22"/>
                </target>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.42</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.8.2</version>
        </dependency>
    </dependencies>
    

  5. 堆栈跟踪如下:

    $ mvn -e
    + Error stacktraces are turned on.
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    ...
    [INFO] Executing tasks
    
    main:
          [scp] Connecting to dev-jboss02.com:22
          [scp] Connecting to dev-jboss02.com port 22
          [scp] Connection established
          [scp] Remote version string: SSH-2.0-OpenSSH_5.8
          [scp] Local version string: SSH-2.0-JSCH-0.1.38
          [scp] CheckCiphers: aes256-cbc,aes192-cbc,aes128-cbc
          [scp] aes256-cbc is not available.
          [scp] aes192-cbc is not available.
          [scp] SSH_MSG_KEXINIT sent
          [scp] SSH_MSG_KEXINIT received
          [scp] kex: server->client aes128-cbc hmac-md5 none
          [scp] kex: client->server aes128-cbc hmac-md5 none
          [scp] SSH_MSG_KEXDH_INIT sent
          [scp] expecting SSH_MSG_KEXDH_REPLY
          [scp] ssh_rsa_verify: signature true
          [scp] Permanently added 'dev-jboss02.com' (RSA) to the list of known hosts.
          [scp] SSH_MSG_NEWKEYS sent
          [scp] SSH_MSG_NEWKEYS received
          [scp] SSH_MSG_SERVICE_REQUEST sent
          [scp] SSH_MSG_SERVICE_ACCEPT received
          [scp] Authentications that can continue: publickey,keyboard-interactive,password
          [scp] Next authentication method: publickey
          [scp] Authentications that can continue: keyboard-interactive,password
          [scp] Next authentication method: keyboard-interactive
          [scp] Authentications that can continue: password
          [scp] Next authentication method: password
          [scp] Disconnecting from dev-jboss02.com port 22
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] An Ant BuildException has occured: com.jcraft.jsch.JSchException: Auth fail
    
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.apache.maven.lifecycle.LifecycleExecutionException: An Ant BuildException has occured: com.jcraft.jsch.JSchException: Auth fail
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
            at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
            at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    Caused by: org.apache.maven.plugin.MojoExecutionException: An Ant BuildException has occured: com.jcraft.jsch.JSchException: Auth fa
    il
            at org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:283)
            at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
            ... 17 more
    Caused by: C:workspace\trunk\pix-test-automation\target\antrun\build-main.xml:4: com.jcraft.jsch.JSchException: Aut
    h fail
            at org.apache.tools.ant.taskdefs.optional.ssh.Scp.execute(Scp.java:245)
            at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
            at org.apache.tools.ant.Task.perform(Task.java:348) 
    
  6. 同样在sshd日志中,我看到客户端正在使用JSCH-0.1.38,其中客户端使用的是jsch-0.1.44,我没有在ant lib或mvn中使用JSCH-0.1.38回购任何地方..

    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3224: debug1: fd 5 clearing O_NONBLOCK
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3224: debug1: Forked child 3364.
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: debug1: inetd sockets after dupping: 3, 3
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: Connection from **.**.**.** port 44082
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: debug1: Client protocol version 2.0; client software version JSCH-0.1.38
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: debug1: no match: JSCH-0.1.38
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: debug1: Enabling compatibility mode for protocol 2.0
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3364: debug1: Local version string SSH-2.0-OpenSSH_5.8
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: list_hostkey_types: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: SSH2_MSG_KEXINIT sent
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: SSH2_MSG_KEXINIT received
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: kex: client->server aes128-cbc hmac-md5 none
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: kex: server->client aes128-cbc hmac-md5 none
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: expecting SSH2_MSG_KEXDH_INIT
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: SSH2_MSG_NEWKEYS sent
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: expecting SSH2_MSG_NEWKEYS
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: SSH2_MSG_NEWKEYS received
    Sep 21 13:45:46 DEV-JBOSS02 sshd: PID 3924: debug1: KEX done
    Sep 21 13:45:47 DEV-JBOSS02 sshd: PID 3924: debug1: userauth-request for user devlocal service ssh-connection method none
    Sep 21 13:45:47 DEV-JBOSS02 sshd: PID 3924: debug1: attempt 0 failures 0
    Sep 21 13:45:49 DEV-JBOSS02 sshd: PID 3364: reverse mapping checking getaddrinfo for sjcgnaval1 [10.32.102.33] failed - POSSIBLE BREAK-IN ATTEMPT!
    
  7. 我热衷于获取密码身份验证而不是密钥身份验证,因为这是一个自动化项目,其中VM映像为每次运行创建。

  8. 此致 gnaval

2 个答案:

答案 0 :(得分:1)

您是否安装了您的ant安装可以看到的JSch库? Ant scp task documentation明确指出这是必要的:

  

注意:此任务取决于Ant中未包含的外部库   分配。有关详细信息,请参阅Library Dependencies

在那里,你会发现

  

jsch.jar 0.1.50或更高版本

SCP任务需要

JSCh is available here

答案 1 :(得分:0)

尝试使用Maven 3,Maven 2嵌入jsch 0.1.38,它优先于插件依赖项中指定的版本。这在Maven 3中得到了解决。