Apache Camel 设置 privateKey SFTP

Apache Camel set privateKey SFTP

我正在尝试连接到 sftp 服务器以存储一些文件。我想通过 SSH 连接。 我的问题几乎与: Camel SFTP component - SSH private key URI works with privateKeyFile, doesn't work with privateKey 以及以下答案: 但是我还是连接不上

我的工作路线:

 from(mytopic)
  .to(sftp://username@my.host:22/folder/?privateKeyFile=path/to/privateRsa)

我的非工作路线:

  from(mytopic)
  .to(sftp://username@my.host:22/folder/?privateKey=byteArrayRsa)

我调试了 com.jcraft.jsch.KeyPair class -> 以下方法:

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

似乎我没有得到正确的 byte[] prvkey,而是得到了它的地址。 如何发送正确的字节数组?我尝试按照其中一个链接中的建议创建一个 bean,但没有成功。 (我使用的是骆驼 3.1)

这不起作用,您不能简单地在路由定义中使用 ByteArray 引用。当您使用像 org.apache.camel.impl.SimpleRegistry 这样的注册表来存储密钥引用时,它会起作用。

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

然后你可以在路由中使用引用:

privateKey=#MySshKey

也许你也可以使用 Spring 注入。