Cloudera向导步骤“安装代理”中的SSH问题

问题描述 投票:1回答:2

我试图在服务器A和B上安装HBase(Ubuntu 18.04)

为此,我使用服务器A上安装的CDM(CDM 6.3.1〜1466458.ubuntu1804)处理服务器A和B上的HBASE安装。

但是在“安装代理”步骤中遇到问题,向导将显示以下错误消息“可用的可用身份验证方法已用尽。”

[我在Cloudera论坛上找到了一些有关NOPASSWD的帖子,这些帖子将添加到服务器B的sudoers文件中,但就我而言,我已经在命令行中建立了从服务器A到服务器B的ssh连接,并运行一个没有任何密码的sudo命令,因此我想我的服务器已正确配置。

确切地说,我试图使用私钥来连接服务器,我已经通过使用以下命令在服务器A中生成了一对密钥:

ssh-keygen -t rsa

并且在将生成的文件.ssh/id_rsa.pub的内容添加到服务器B的.ssh/authorized_keys文件之后,重试后,我获得了相同的结果。

我在日志文件中找到了此跟踪:

2020-01-02 09:48:39,559 WARN NodeConfiguratorThread-22-0:com.cloudera.server.cmf.node.NodeConfigurator: Could not authenticate to SERVER_B net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods at net.schmizz.sshj.SSHClient.auth(SSHClient.java:232) at net.schmizz.sshj.SSHClient.auth(SSHClient.java:208) at com.cloudera.server.cmf.node.NodeConfigurator.connect(NodeConfigurator.java:416) at com.cloudera.server.cmf.node.NodeConfigurator.configure(NodeConfigurator.java:1028) at com.cloudera.server.cmf.node.NodeConfigurator.run(NodeConfigurator.java:1106) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

Caused by: net.schmizz.sshj.userauth.UserAuthException: Problem getting public key from PKCS8KeyFile{resource=[PrivateKeyStringResource]} at net.schmizz.sshj.userauth.method.KeyedAuthMethod.putPubKey(KeyedAuthMethod.java:46) at net.schmizz.sshj.userauth.method.AuthPublickey.buildReq(AuthPublickey.java:62) at net.schmizz.sshj.userauth.method.AuthPublickey.buildReq(AuthPublickey.java:81) at net.schmizz.sshj.userauth.method.AbstractAuthMethod.request(AbstractAuthMethod.java:63) at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:68) at net.schmizz.sshj.SSHClient.auth(SSHClient.java:226) ... 9 more

Caused by: java.io.IOException: unrecognised object: OPENSSH PRIVATE KEY at org.bouncycastle.openssl.PEMParser.readObject(Unknown Source) at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.readKeyPair(PKCS8KeyFile.java:132) at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.getPublic(PKCS8KeyFile.java:78) at net.schmizz.sshj.userauth.method.KeyedAuthMethod.putPubKey(KeyedAuthMethod.java:44)

... 14 more

有人有帮助我的想法吗?

java ssh hbase cloudera
2个回答
0
投票

我遇到了完全相同的问题,结果发现ssh-keygen使用BEGIN OPENSSH PRIVATE KEY创建了一个私有密钥文件,Cloudera使用的Java库不知道该如何解析。您可以将openssl与以下命令结合使用:

openssl genrsa -out mykey.pem 1024

ssh-keygen不会为您提供所需的公钥,并且内置openssl命令从私钥获取公钥的功能不是Cloudera接受的格式。对于that,您can像这样使用ssh-keygen

ssh-keygen -y -f mykey.pem > mykey.pub

0
投票

因此,我找到了问题的根源。我需要从服务器B上的服务器A添加发布密钥,但也需要从服务器B到服务器A。就这样

© www.soinside.com 2019 - 2024. All rights reserved.