我正在尝试连接到sftp服务器以存储一些文件。我想通过SSH连接。我的问题几乎与:Camel SFTP component - SSH private key URI works with privateKeyFile, doesn't work with privateKey以及以下答案:Apache Camel - How to set a private key in a dinamic sftp endpoint但是我仍然没有设法连接。
我的工作路线:
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)
这不起作用,您不能仅在路由定义中使用ByteArray引用。当您使用诸如org.apache.camel.impl.SimpleRegistry
的注册表来存储键参考时,它可以工作。
simpleRegistry.put("MySshKey", byteArrayRsa)
camelCtx.setRegistry(simpleRegistry)
然后您可以在路线中使用参考:
privateKey=#MySshKey
也许您也可以使用Spring Injection。