Hi,
I'm trying to setup a simple (in my eyes) file transfer between servers, and
when configuring this I am trying to transfer files from my windows machine to
a remote server. But I simply can't get it to work.
The route looks like this:
<route>
<from
uri="file:{{inputDirectory}}?include=(?i).*\.*&delete=true&delay=5000&filter=#fileFilter"
/>
<to
uri="scp://our-server/tmp/?username=user&password=password&strictHostKeyChecking=no"
/>
</route>
First, it complained about the missing file C:\Users\username\.ssh\known_hosts.
When I created that file and tried again, it complains about "Auth cancel".
Here is the stacktrace:
2016-06-20 10:05:50,926 [Camel (camel-1) thread #0] WARN
org.apache.camel.component.scp.ScpOperations - Could not create ssh session for
scp://user@our-server:22 com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:511)
at
org.apache.camel.component.scp.ScpOperations.createSession(ScpOperations.java:253)
at
org.apache.camel.component.scp.ScpOperations.connect(ScpOperations.java:179)
at
org.apache.camel.component.file.remote.RemoteFileProducer.connectIfNecessary(RemoteFileProducer.java:209)
at
org.apache.camel.component.file.remote.RemoteFileProducer.recoverableConnectIfNecessary(RemoteFileProducer.java:179)
at
org.apache.camel.component.file.remote.RemoteFileProducer.preWriteCheck(RemoteFileProducer.java:133)
at
org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:113)
at
org.apache.camel.component.file.remote.RemoteFileProducer.process(RemoteFileProducer.java:58)
...
In the code for com.jcraft.jsch.Session I see that the original
JSchAuthCancelException is caught and swallowed (except setting
auth_cancel=true) on line 471. But when debugging this in Eclipse I get some
more information about the error. For example I can see that the message/method
is "keyboard-interactive", the kex is of the type com.jcraft.jsch.DHG14 and
it's key_alg_name is "ssh-rsa". Maybe this says something important to someone.
But the thing that sticks out for me is that the javadoc for DHG14
(http://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/DHG14.html)
specifically says "Usually not to be used by applications", which could be an
indication that the wrong KeyExchange type is used, right? The javadoc also
says that it "Implements the key exchange method diffie-hellman-group1-sha1,
using the Oakley Group 14".
Is it possible to make Camel use a different KeyExchange type? I can't find any
documentation about this. In fact, the scp support in Camel is not really
documented much at all, if you ask me.
If it is not possible to change the KeyExchange type, what other options to I
have to make scp work?
I use Camel 2.17.0, and sftp with the same server, username and password works
just fine.
Regards
/Jimi