【发布时间】:2019-12-21 01:40:06
【问题描述】:
我有一条看起来像下一条的骆驼路线:
from("direct:download")
.pollEnrich()
.simple("sftp://my.host:22/folder/?username=foo&fileName=${header.CamelFileName}
&privateKeyFile=src/main/resources/privateSSHKey")
.to("file://state/downloaded");
文件 src/main/resources/privateSSHKey 是一个 RSA 私钥。这没有问题:JSCH(Camel 用于 SFTP 端点的库)设法连接并下载所需的文件。
以前的设置在开发时是可以的,因为我可以在本地拥有带有密钥的文件。 但是,对于 prod,我们有其他系统,我可以在其中获取包含密钥内容的字节数组。为此,我将路线更改为如下所示:
from("direct:download")
.pollEnrich()
.simple("sftp://my.host:22/folder/?username=foo&fileName=${header.CamelFileName}
&privateKey=" + URLEncoder.encode(new String(sshPrivateKey), "UTF-8"))
.to("file://state/downloaded");
...作为 sshPrivateKey 字节数组。不幸的是,我总是从 JSCH 获得“auth_cancel”,调试我可以看到在尝试与 SFTP 服务器握手时会发生这种情况。
我错过了什么吗?我很确定编码 sshPrivateKey byte[] 是可行的方法(如果我不这样做,JSCH 会抱怨错误的密钥),但我不确定我还缺少什么?
【问题讨论】:
-
在注册表中存储私钥的字节数组stackoverflow.com/questions/57396184/…
-
@raspayu 你设法解决了这个问题吗?我有完全相同的问题,我不太明白如何在注册表中设置我的私钥以及为什么
标签: java apache-camel jsch