Apache Camel / JSCH разрешение отказано для загрузки SFTPJAVA

Программисты JAVA общаются здесь
Anonymous
Apache Camel / JSCH разрешение отказано для загрузки SFTP

Сообщение Anonymous »

Я использую Apache Camel 3.4.10 для загрузки некоторых файлов на сервер SFTP, и, с почти одной недели, это больше не работает, и ниже есть вывод, который я получаю:

Код: Выделить всё

2025-05-23 12:02:08,890 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:10,199 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:11,530 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:12,925 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:14,255 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:15,658 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:17,103 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:18,452 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:19,787 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:21,133 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:22,506 WARN  [org.apache.camel.component.file.remote.RemoteFileProducer:87] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Writing file failed with: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
2025-05-23 12:02:22,508 ERROR [org.apache.camel.processor.errorhandler.DefaultErrorHandler:205] (Camel (tsbulk-sftp-context) thread #1 - file:///export/home/tsbulk_delivery) Failed delivery for (MessageId: 44C4CB7F36787D0-000000000000001F on ExchangeId: 44C4CB7F36787D0-000000000000001F).  Exhausted after delivery attempt: 11 caught: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml

Message History (complete message history is disabled)
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[selection-files   ] [selection-files   ] [from[file:///export/home/tsbulk_delivery?antInclude=*%2Fselection%2F*.xml&flat] [     55166]
...
[selection-files   ] [to1               ] [sftp::6323/tsbulk-prod?preferredAuthentications=publi] [         0]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: tsbulk-prod/CH36158/tsbulk_delivery/selection/labsconfig1.xml
at org.apache.camel.component.file.remote.SftpOperations.doStoreFile(SftpOperations.java:1061)
at org.apache.camel.component.file.remote.SftpOperations.storeFile(SftpOperations.java:977)
at org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:290)
at org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:173)
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$RedeliveryTask.redeliver(RedeliveryErrorHandler.java:895)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:193)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:185)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:492)
at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:245)
at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:206)
at org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
at org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: 3: Permission denied.
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2830)
at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:561)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:509)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:464)
at org.apache.camel.component.file.remote.SftpOperations.doStoreFile(SftpOperations.java:1039)
...  25 more
Странная вещь в том, что, если я подключаюсь к SFTP-серверу с WinScp, я действительно вижу файлы, которые там загружают/обновлены.

Код: Выделить всё

protected StringBuilder buildTargetSftpEndpoint() {
final StringBuilder builder = new StringBuilder();
builder.append("sftp:");
builder.append(config.getHost());
builder.append(":");
builder.append(config.getPort());
if(!config.getRootDirectoryName().startsWith("/")) builder.append("/");
builder.append(config.getRootDirectoryName());
builder.append("?preferredAuthentications=publickey");
builder.append("&fastExistsCheck=true");
builder.append("&greedy=true");
builder.append("&throwExceptionOnConnectFailed=true");
builder.append("&initialDelay=0");
builder.append("&stepwise=false");
builder.append("&reconnectDelay=0");
builder.append("&serverAliveCountMax=0");
builder.append("&serverAliveInterval=0");
builder.append("&username=");
builder.append(config.getUsername());
builder.append("&privateKeyFile=");
builder.append(config.getSshPrivateKey());
builder.append("&knownHostsFile=");
builder.append(config.getSshKnownHostsFile());
builder.append("&maximumReconnectAttempts=");
builder.append(maxRetries);

return builder;
}
< /code>
конечная точка файла определяется следующим образом: < /p>
private String buildSourceEndpointUri() {
final StringBuilder builder = new StringBuilder();
builder.append("file:");
if(!getBaseDirectory().startsWith("/")) builder.append("/");
builder.append(getBaseDirectory());
builder.append("?recursive=true");
builder.append("&flatten=false");
builder.append("&startingDirectoryMustExist=true");
builder.append("&noop=true");
builder.append("&idempotent=true");
builder.append("&idempotentKey=${file:name}-${file:modified}");
builder.append("&greedy=true");
builder.append("&initialDelay=0");
builder.append("&antInclude=");
builder.append("*/");
builder.append(selectionSpace.getDir());
builder.append("/*.xml");

return builder.toString();
}
Честно говоря, я больше не знаю, что искать, особенно с учетом того факта, что тот же самый точный код работает правильно в среде QA против сервера QA SFTP, но не в Prod и только с недели или около того.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ftp-upload

Вернуться в «JAVA»