【问题标题】:camel-ssh key based authenticationcamel-ssh 基于密钥的身份验证
【发布时间】:2017-09-06 07:54:06
【问题描述】:

我正在尝试通过骆驼路线执行 ssh 命令。我在下面 错误任何人都可以帮助我解决问题。我可以使用用户名和密码来执行命令。

我在服务器的授权密钥中复制的公钥。 我正在使用蓝图 dsl。

 < to uri="ssh://admin@10.23.24.41:22? certResource=classpath:test_rsa&amp;timeout=5000"/>

test_rsa 是公钥所在的文件名。

Server at /10.23.24.41:22 presented unverified DSA key: 
8a:40:91:2a:16:90:8c:c4:06:b1:1f:79:74:2f:08:09

EXCEPTION MESSAGEstrong text=Cannot execute command: 
ls /opt/esb/jboss-fuse-6.2.1.redhat-084. Exchange[Message: 
ls /opt/esb/jboss-fuse-6.2.1.redhat-084]. Caused by: [java.io.IOException - Error performing public key authentication] 
STACKTRACE=org.apache.camel.CamelExchangeException: Cannot execute command: 
ls /opt/esb/jboss-fuse-6.2.1.redhat-084. Exchange[Message: 
ls /opt/esb/jboss-fuse-6.2.1.redhat-084]. Caused by: [java.io.IOException - Error performing public key authentication] 
at org.apache.camel.component.ssh.SshProducer.process(SshProducer.java:64) 
at org.apache.camel.util.AsyncProcessorConverterHelperProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)atorg.apache.camel.processor.SendProcessor.process(SendProcessor.java:139)atorg.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)atorg.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)atorg.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)atorg.apache.camel.processor.Pipeline.process(Pipeline.java:121)atorg.apache.camel.processor.Pipeline.process(Pipeline.java:83)atorg.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)atorg.apache.camel.component.directvm.DirectVmProcessor.process(DirectVmProcessor.java:55)atorg.apache.camel.component.directvm.DirectVmProducer.process(DirectVmProducer.java:55)atorg.apache.camel.processor.SendProcessor.process(SendProcessor.java:139)atorg.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)atorg.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)atorg.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)atorg.apache.camel.processor.Pipeline.process(Pipeline.java:121)atorg.apache.camel.processor.Pipeline.process(Pipeline.java:83)atorg.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)atorg.apache.camel.component.cxf.CxfConsumer1.asyncInvoke(CxfConsumer.java:95) 
at org.apache.camel.component.cxf.CxfConsumer1.invoke(CxfConsumer.java:75)atorg.apache.cxf.interceptor.ServiceInvokerInterceptor1.run(ServiceInvokerInterceptor.java:59) 
at java.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:511)atjava.util.concurrent.FutureTask.run(FutureTask.java:266)atorg.apache.cxf.interceptor.ServiceInvokerInterceptor2.run(ServiceInvokerInterceptor.java:126) 
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) 
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251) 
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:261) 
at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
at org.eclipse.jetty.server.Server.handle(Server.java:370) 
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) 
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984) 
at org.eclipse.jetty.server.AbstractHttpConnectionRequestHandler.content(AbstractHttpConnection.java:1045)atorg.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)atorg.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)atorg.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)atorg.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)atorg.eclipse.jetty.io.nio.SelectChannelEndPoint1.run(SelectChannelEndPoint.java:53) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.IOException: Error performing public key authentication 
at org.apache.sshd.client.auth.deprecated.UserAuthPublicKey.next(UserAuthPublicKey.java:90) 
at org.apache.sshd.client.session.ClientUserAuthServiceOld.processUserAuth(ClientUserAuthServiceOld.java:150) 
at org.apache.sshd.client.session.ClientUserAuthServiceOld.auth(ClientUserAuthServiceOld.java:183) 
at org.apache.sshd.client.session.ClientUserAuthService.auth(ClientUserAuthService.java:109) 
at org.apache.sshd.client.session.ClientSessionImpl.tryAuth(ClientSessionImpl.java:182) 
at org.apache.sshd.client.session.ClientSessionImpl.authPublicKey(ClientSessionImpl.java:173) 
at org.apache.camel.component.ssh.SshHelper.sendExecCommand(SshHelper.java:82) 
at org.apache.camel.component.ssh.SshProducer.process(SshProducer.java:59) 
… 47 more 
Caused by: java.lang.NullPointerException 
at org.apache.sshd.common.util.KeyUtils.getKeyType(KeyUtils.java:67) 
at org.apache.sshd.client.auth.deprecated.UserAuthPublicKey.next(UserAuthPublicKey.java:61) 
… 54 more

【问题讨论】:

    标签: ssh apache-camel blueprint-osgi


    【解决方案1】:

    我忘记在类路径中添加 test_rsa 作为私钥和 test_rsa.pub。添加后,我就可以与服务器通信了。

    【讨论】:

      【解决方案2】:

      而不是 certResource=classpath:test_rsa, 试试:privateKeyFile=/path/to/test_rsa

      您的 known_hosts 文件最初可以为空。 这对我有用。希望这会有所帮助!

      【讨论】:

      • 感谢您的回复。它工作正常。我做的唯一错误是我复制了公钥而不是私钥。
      • 是的,我认为只有私钥就足够了,您只需要使用这两个选项:known_hosts 和 privateKeyFile。
      • 是的,私钥本身就足够了。不需要已知主机或公钥。我直接使用 certResource 而不是 privateKeyFile 它为我工作。
      • 请标记我的回答有帮助。它将帮助我获得一些分数。 :)
      • 当你回复我时,我尝试标记,但我没有声誉,所以它没有更新
      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2019-01-29
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多