Apache Camel установил частный ключ SFTP

Я пытаюсь подключиться к sftp-серверу для хранения некоторых файлов. Я хочу подключиться через SSH. Мой вопрос почти идентичен: Camel Компонент SFTP - URI закрытого ключа SSH работает с privateKeyFile, не работает с privateKey и следующим ответом: Apache Camel - Как установить закрытый ключ в динамической конечной точке sftp Но мне все равно не удалось подключиться.

Мой рабочий маршрут:

 from(mytopic)
  .to(sftp://[email protected]:22/folder/?privateKeyFile=path/to/privateRsa)

Мой НЕрабочий маршрут:

  from(mytopic)
  .to(sftp://[email protected]:22/folder/?privateKey=byteArrayRsa)

Я отлаживал класс com.jcraft.jsch.KeyPair → следующий метод:

public static KeyPair load(JSch jsch, byte[] prvkey, byte[] pubkey) throws JSchException 

И похоже, что вместо правильного byte [] prvkey я получил его адрес. Как я могу отправить правильный массив байтов? Я попытался создать bean-компонент, как это предлагается в одной из ссылок, но это не сработало. (Я использую верблюд 3.1)


person agata    schedule 05.06.2020    source источник


Ответы (1)


Это не работает, вы не можете просто использовать ссылку ByteArray в определении маршрута. Это работает, когда вы используете реестр, например org.apache.camel.impl.SimpleRegistry, для хранения ключевой ссылки.

simpleRegistry.put("MySshKey", byteArrayRsa)
camelCtx.setRegistry(simpleRegistry)

Затем вы можете использовать ссылку в маршруте:

privateKey=#MySshKey

Возможно, вы также могли бы использовать Spring Injection.

person mdo    schedule 07.06.2020
comment
Это работает, я не подумал попробовать вот так. Вместо этого я создал класс с методом, возвращающим мой byteArray, я аннотировал этот класс с помощью @Component и ссылаюсь на него так, но это не сработало. Вы знаете почему? Разве все бины не должны автоматически добавляться в реестр? (Я использую верблюд 3.1.0) - person agata; 09.06.2020