Apache camel 驼峰SSH密钥对提供程序选项

Apache camel 驼峰SSH密钥对提供程序选项,apache-camel,key-pair,Apache Camel,Key Pair,有人能建议如何使用驼峰SSH组件指定keyPairProvider选项吗 我正在尝试使用驼峰SSH组件和KeyPairProvider选项连接到远程SSH服务器。文档中不清楚如何使用这个选项、语法或我们需要提供的值等。我已经尝试过给出类名、完整的类路径、密钥文件名等。没有任何效果。我总是得到下面的错误 Caused by: java.lang.IllegalArgumentException: Could not find a suitable setter for property: keyP

有人能建议如何使用驼峰SSH组件指定keyPairProvider选项吗

我正在尝试使用驼峰SSH组件和KeyPairProvider选项连接到远程SSH服务器。文档中不清楚如何使用这个选项、语法或我们需要提供的值等。我已经尝试过给出类名、完整的类路径、密钥文件名等。没有任何效果。我总是得到下面的错误

Caused by: java.lang.IllegalArgumentException: Could not find a suitable setter for property: keyPairProvider as there isn't a setter method with same type: java.lang.String nor type conversion possible: No type converter available to convert from type: java.lang.String to the required type: org.apache.sshd.common.KeyPairProvider with value file:com.example.tree.custom.CustomFileKeyPairProvider
    at org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:555)
    at org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:565)
    at org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:453)
    at org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:249)
    at org.apache.camel.impl.DefaultComponent.setProperties(DefaultComponent.java:264)
    at org.apache.camel.component.ssh.SshComponent.createEndpoint(SshComponent.java:47)
    at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:120)
    at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:508)
    ... 18 more
这是我的路线

from("direct:sshroute")
.to("ssh://sshuser1@10.115.136.176?keyPairProvider=com.example.tree.custom.CustomFileKeyPairProvider")
如果我不提供keyPairProvider并将路由更改为使用密码,那么它可以正常工作

我还想提到,如果我创建自己的SSHComponent,设置CustomFileKeyPairProvider并将其添加到CamelContext(如测试包中所给出的),它也可以正常工作。 但我只想知道,如果我们使用默认的Camel组件,我们如何使用这个选项

谢谢
-Ravi

我一直在试图找到这个问题的答案,因为我还需要能够通过驼峰式SFTP路径交付文件。幸运的是,我找到了有效的方法

基本上,您需要做的是将私钥而不是公钥提供给您的骆驼路线。这里的假设是,您生成了一个与远程SSH/SFTP服务器共享的公钥,将该公钥传递到远程站点,并且您或远程管理员将该文件放在远程站点上的“authorized_keys”容器中

也就是说,您构建的驼峰SFTP路线如下所示:

<to uri="sftp://username@remote_server_address/directoryname?privateKeyFile=/full/path/to/your/private_key/id_dsa&amp;knownHostsFile=/full/path/to/your/known_hosts" />

我在我的研究结果中更详细一些,但这是主要的jist。祝你好运

如果要使用密钥对查找SSH连接,可以使用
certResource
选项,如

from("direct:sshroute")
.to("ssh://sshuser1@10.115.136.176?certResource=file:path/to/your/private_key)

文档中说,您可以使用
类路径:
文件:
、或
http:
,作为path的前缀,但我只尝试了
文件:

您是否能够找到一些相关信息?您是否试图使用SSH公钥登录到远程SSH而不提供密码?我只是想再核实一下,因为我正在积极地进行这方面的工作。嗨,Mastashake57,谢谢你的回复。我正在寻找使用密钥对的SSH连接。对于SFTPComponent,我已经在使用上述方法。SSHComponent的问题在于camel文档没有给出如何为内置camel SSH组件使用keyPairProvider选项的示例。
from("direct:sshroute")
.to("ssh://sshuser1@10.115.136.176?certResource=file:path/to/your/private_key)