Ant SCP任务无法工作 - 但我能够使用cygwin进行SCP操作。

4

请提供关于我在工作中遇到的问题的专业意见。

  1. Ant SCP task not working - where as I am able to scp using cygwin.

  2. Local Environment: windows 7 64 bit, Jdk 1.6.0.24, Ant-1.8.2 (with ant optional dependencies fetched), maven 2 (usign ant run plugin), jsch-0.1.44 Remote Environment: VM Labmanager 4.0, Windows Server 2008 - R2, SSH-2.0-OpenSSH_5.8, JDK 1.6.0.24

  3. I have set password authetication to yes and restarted sshd on remote host.

  4. Maven goal is as follows. (btw, I executed same ANT target as well, so Ant and Maven are giving the same result with jsch-0.1.44 and 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. Stack trace is as follows:

    $ 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. Also on the sshd log, I see it says client is using JSCH-0.1.38, where client is using jsch-0.1.44, I dont have JSCH-0.1.38 neither in ant lib's or in mvn repo anywhere..

    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. I am keen to get the password authentication and not key authentication, as this is a automation project where the VM image create for each run.

问候,gnaval


不需要使用 Ant。您可以使用 Apache Maven Wagon 插件。请参见 https://dev59.com/-nRB5IYBdhLWcg3wkH5N#42468595。 - ᄂ ᄀ
2个回答

1
您是否已经安装了JSch库,以便您的Ant安装程序可以看到它?Ant scp task documentation清楚地说明这是必需的:

注意:此任务依赖于未包含在Ant发行版中的外部库。有关更多信息,请参见Library Dependencies

在那里,您会发现

需要jsch.jar 0.1.50或更高版本

用于SCP任务。 JSCh在此处可用:

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接