Im facing a problem when im trying to use Apache Camel to connect to a SFTP host which is controlled by a business partner. I have created a ssh public/private keypair and they have installed the public key at their server and through both fileZilla and shell sftp im able to connect without any problems. But when im trying to connect with apache Camel i receive an error : Auth fail for methods 'publickey,password' Im aware that theres an issue about the jsch library in Camel, but i have upgraded to Camel version 3.19 and according to the dependency tree that can be viewed by ./gradlew dependencies' im using the fork of jsch 'mwiede' version 0.2.1
The SFTP server that im trying to connect to is apparantly rather old but i have no influence on that. When using the shell sftp command it was nescessary to use an option '-oHostKeyAlgorithms=+ssh-dss' but after that its working without a problem.
Im running it locally from a MacOS in IntelliJ - with springboot 2.6.7 and java 17 The Camel route is looking like this
public void configure() {
String privateKeyString = Files.readString(Path.of("/Users/jaan/.ssh/id_rsa_cloud-integration_test"), StandardCharsets.UTF_8);
getCamelContext().getRegistry().bind("myPrivateKey", privateKeyString.getBytes(StandardCharsets.UTF_8));
from(aws2S3(bucketId + "?amazonS3Client=#s3Client" + awsGetObjectUriParams))
.choice()
.when(body().isNull())
.log("Looking for files in S3 bucket - but found none")
.otherwise()
.log("Found file in S3 [${headers.CamelAwsS3Key}]")
.process(exchange -> {
exchange.getIn().setHeader("CamelAwsS3BucketDestinationName", bucketId);
exchange.getIn().setHeader("CamelAwsS3DestinationKey", generateFileName(exchange));
log.info("Uploading file to S3 bucket [{}] and prefix [{}]", bucketId, exchange.getIn().getHeader("CamelAwsS3DestinationKey"));
})
.to(aws2S3(bucketId + "?amazonS3Client=#s3Client&operation=copyObject"))
.to(sftp(host+":22/test?maximumReconnectAttempts=1")
.binary(true)
.privateKey("#myPrivateKey")
.username(sshUserName)
.jschLoggingLevel("TRACE")
.serverHostKeys("ssh-dss")
.knownHostsFile("/Users/jka/.ssh/known_hosts")
I have also tried to simply copy the ssh private key into the route as a string. The stacktrace that im receiving is below
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.7)
dk.ds.cargo.Application : Starting Application using Java 17.0.5 on COM1865 with PID 47585 (/Users/jka/workspace_git/bis-cargo-programblade/build/classes/java/main started by jka in /Users/jka/workspace_git/bis-cargo-programblade)
dk.ds.cargo.Application : Running with Spring Boot v2.6.7, Spring v5.3.19
dk.ds.cargo.Application : The following 1 profile is active: "local"
o.s.b.devtools.restart.ChangeableUrls : The Class-Path manifest attribute in /Users/jka/.m2/repository/com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar referenced one or more files that do not exist: file:/Users/jka/.m2/repository/com/sun/xml/bind/jaxb-core/2.3.0/jaxb-api.jar
.e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
.e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
o.s.cloud.context.scope.GenericScope : BeanFactory id=5934d1b4-b141-3085-8f00-cedb8da5fbc5
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
o.apache.catalina.core.StandardService : Starting service [Tomcat]
org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.62]
o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3519 ms
o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6587be01, org.springframework.security.web.context.SecurityContextPersistenceFilter@5943fb8e, org.springframework.security.web.header.HeaderWriterFilter@1182b1fe, org.springframework.security.web.csrf.CsrfFilter@47903918, org.springframework.security.web.authentication.logout.LogoutFilter@268e02b2, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@66a704a1, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@4c442cf0, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@3a072250, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1bbe8c42, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@491c5377, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2100053f, org.springframework.security.web.session.SessionManagementFilter@7cca7c8d, org.springframework.security.web.access.ExceptionTranslationFilter@1a79bb88, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2297c946]
o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/monitor'
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
d.d.cargo.programblade.ProgrambladRoute : host <host ip adress>
d.d.cargo.programblade.ProgrambladRoute : userName <username>
.c.i.e.DefaultAutowiredLifecycleStrategy : Autowired property: amazonS3Client on component: aws2-s3 as exactly one instance of type: software.amazon.awssdk.services.s3.S3Client (software.amazon.awssdk.services.s3.DefaultS3Client) found in the registry
o.a.c.impl.engine.AbstractCamelContext : Apache Camel 3.19.0 (camel-1) is starting
o.a.c.impl.engine.AbstractCamelContext : Routes startup (started:1)
o.a.c.impl.engine.AbstractCamelContext : Started route1 (aws2-s3://<bucket ID>)
o.a.c.impl.engine.AbstractCamelContext : Apache Camel 3.19.0 (camel-1) started in 1s687ms (build:85ms init:777ms start:825ms)
dk.ds.cargo.Application : Started Application in 11.607 seconds (JVM running for 12.253)
dk.ds.cargo.Application : Spring application is ready to serve!
route1 : Found file in S3 [s3 bucket prefix]
d.d.cargo.programblade.ProgrambladRoute : Uploading file to S3 bucket [bucketID] and prefix [prefix]
o.a.c.c.file.remote.SftpOperations : JSCH -> Connecting to <host IP adress> port 22
o.a.c.c.file.remote.SftpOperations : JSCH -> Connection established
o.a.c.c.file.remote.SftpOperations : JSCH -> Remote version string: SSH-2.0-9.99 sshlib
o.a.c.c.file.remote.SftpOperations : JSCH -> Local version string: SSH-2.0-JSCH_0.2.1
o.a.c.c.file.remote.SftpOperations : JSCH -> CheckCiphers: chacha20-poly1305@openssh.com
o.a.c.c.file.remote.SftpOperations : JSCH -> CheckKexes: curve25519-sha256,curve25519-sha256@libssh.org,curve448-sha512
o.a.c.c.file.remote.SftpOperations : JSCH -> CheckSignatures: ssh-ed25519,ssh-ed448
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_KEXINIT sent
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_KEXINIT received
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: ssh-dss
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: aes256-ctr,twofish256-ctr,twofish-ctr,aes128-ctr,twofish128-ctr,3des-ctr,cast128-ctr,aes256-cbc,twofish256-cbc,twofish-cbc,aes128-cbc,twofish128-cbc,blowfish-cbc,3des-cbc,arcfour,cast128-cbc
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: aes256-ctr,twofish256-ctr,twofish-ctr,aes128-ctr,twofish128-ctr,3des-ctr,cast128-ctr,aes256-cbc,twofish256-cbc,twofish-cbc,aes128-cbc,twofish128-cbc,blowfish-cbc,3des-cbc,arcfour,cast128-cbc
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: hmac-sha2-512,hmac-sha2-256,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: hmac-sha2-512,hmac-sha2-256,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: zlib,none
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server: zlib,none
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server:
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server:
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,ext-info-c
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: ssh-dss
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: none
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client: none
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client:
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client:
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: algorithm: diffie-hellman-group-exchange-sha256
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: host key algorithm: ssh-dss
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
o.a.c.c.file.remote.SftpOperations : JSCH -> kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_KEX_DH_GEX_REQUEST(2048<3072<8192) sent
o.a.c.c.file.remote.SftpOperations : JSCH -> expecting SSH_MSG_KEX_DH_GEX_GROUP
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_KEX_DH_GEX_INIT sent
o.a.c.c.file.remote.SftpOperations : JSCH -> expecting SSH_MSG_KEX_DH_GEX_REPLY
o.a.c.c.file.remote.SftpOperations : JSCH -> ssh_dss_verify: signature true
o.a.c.c.file.remote.SftpOperations : JSCH -> Host '<IP adress>' is known and matches the DSA host key
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_NEWKEYS sent
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_NEWKEYS received
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_SERVICE_REQUEST sent
o.a.c.c.file.remote.SftpOperations : JSCH -> SSH_MSG_SERVICE_ACCEPT received
o.a.c.c.file.remote.SftpOperations : JSCH -> Authentications that can continue: publickey
o.a.c.c.file.remote.SftpOperations : JSCH -> Next authentication method: publickey
o.a.c.c.file.remote.SftpOperations : JSCH -> Disconnecting from <IP adress> port 22
o.a.c.c.file.remote.RemoteFileProducer : Writing file failed with: Cannot connect to sftp://<username>@<IP adress>:22
o.a.c.p.e.DefaultErrorHandler : Failed delivery for (MessageId: 1EFB2ABB1EFFD39-0000000000000000 on ExchangeId: 1EFB2ABB1EFFD39-0000000000000000). Exhausted after delivery attempt: 1 caught: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot connect to sftp://<username>@<IP adress>:22
Message History (source location and message history is disabled)
---------------------------------------------------------------------------------------------------------------------------------------
Source ID Processor Elapsed (ms)
route1/route1 from[aws2-s3://ds-cloud-integration-test?amazonS3C 12845806
...
route1/to2 sftp://<IP adress>:22/test-folder?maximumReconnec 0
Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot connect to sftp://<username>@<IP adress>:22
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:137)
at org.apache.camel.component.file.remote.RemoteFileProducer.connectIfNecessary(RemoteFileProducer.java:184)
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:61)
at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
at org.apache.camel.processor.SendProcessor.lambda$process$2(SendProcessor.java:191)
at org.apache.camel.support.cache.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:327)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:190)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:477)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:175)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392)
at org.apache.camel.component.aws2.s3.AWS2S3Consumer.processBatch(AWS2S3Consumer.java:300)
at org.apache.camel.component.aws2.s3.AWS2S3Consumer.poll(AWS2S3Consumer.java:175)
at org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
at org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.jcraft.jsch.JSchException: Auth fail for methods 'publickey,password'
at com.jcraft.jsch.Session.connect(Session.java:532)
at org.apache.camel.component.file.remote.SftpOperations.tryConnect(SftpOperations.java:160)
at org.apache.camel.support.task.ForegroundTask.run(ForegroundTask.java:92)
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:135)
... 23 common frames omitted
2022-12-16 13:27:03.248 WARN o.a.c.component.aws2.s3.AWS2S3Consumer : Exchange failed, so rolling back message status: Exchange[1EFB2ABB1EFFD39-0000000000000000]
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot connect to sftp://<username>@<IP adress>:22
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:137)
at org.apache.camel.component.file.remote.RemoteFileProducer.connectIfNecessary(RemoteFileProducer.java:184)
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:61)
at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
at org.apache.camel.processor.SendProcessor.lambda$process$2(SendProcessor.java:191)
at org.apache.camel.support.cache.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:327)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:190)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:477)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:175)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392)
at org.apache.camel.component.aws2.s3.AWS2S3Consumer.processBatch(AWS2S3Consumer.java:300)
at org.apache.camel.component.aws2.s3.AWS2S3Consumer.poll(AWS2S3Consumer.java:175)
at org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
at org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.jcraft.jsch.JSchException: Auth fail for methods 'publickey,password'
at com.jcraft.jsch.Session.connect(Session.java:532)
at org.apache.camel.component.file.remote.SftpOperations.tryConnect(SftpOperations.java:160)
at org.apache.camel.support.task.ForegroundTask.run(ForegroundTask.java:92)
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:135)
... 23 common frames omitted
2022-12-16 13:27:03.249 WARN o.a.c.component.aws2.s3.AWS2S3Consumer : Error processing exchange. Exchange[1EFB2ABB1EFFD39-0000000000000000]. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - Cannot connect to sftp://<username>@<IP adress>:22]
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot connect to sftp://<username>@<IP adress>:22
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:137)
at org.apache.camel.component.file.remote.RemoteFileProducer.connectIfNecessary(RemoteFileProducer.java:184)
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:61)
at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
at org.apache.camel.processor.SendProcessor.lambda$process$2(SendProcessor.java:191)
at org.apache.camel.support.cache.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:327)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:190)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:477)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:175)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392)
at org.apache.camel.component.aws2.s3.AWS2S3Consumer.processBatch(AWS2S3Consumer.java:300)
at org.apache.camel.component.aws2.s3.AWS2S3Consumer.poll(AWS2S3Consumer.java:175)
at org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
at org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.jcraft.jsch.JSchException: Auth fail for methods 'publickey,password'
at com.jcraft.jsch.Session.connect(Session.java:532)
at org.apache.camel.component.file.remote.SftpOperations.tryConnect(SftpOperations.java:160)
at org.apache.camel.support.task.ForegroundTask.run(ForegroundTask.java:92)
at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:135)
... 23 common frames omitted
I hope i can get some help to make this work and avoid being forced to try to implement it in plain java with a sftp library