Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DataStax OpsCenter 4.0;跑步但可以';t运行代理(可以从cmdline ssh到节点,但OpsCenter可以';t_Ssh_Cassandra_Datastax_Opscenter - Fatal编程技术网

DataStax OpsCenter 4.0;跑步但可以';t运行代理(可以从cmdline ssh到节点,但OpsCenter可以';t

DataStax OpsCenter 4.0;跑步但可以';t运行代理(可以从cmdline ssh到节点,但OpsCenter可以';t,ssh,cassandra,datastax,opscenter,Ssh,Cassandra,Datastax,Opscenter,我正在建立一个新的C*集群,并使用apt get安装OpsCenter 4.0;它运行良好,可以看到我的所有节点 我已经设置了一个~/.ssh/id_dsa文件,可以在没有密码的情况下通过ssh连接到我的节点 我试图让OpsCenter通过“修复”安装代理。在“节点SSH凭据”对话框中提供私钥…但我得到“无法SSH到…”错误输出:权限被拒绝(公钥) 我很困惑我怎么能从命令行ssh,但OpsCenter不能 然后,我尝试手动安装代理(再次使用apt get;和service opscenterd

我正在建立一个新的C*集群,并使用apt get安装OpsCenter 4.0;它运行良好,可以看到我的所有节点

我已经设置了一个~/.ssh/id_dsa文件,可以在没有密码的情况下通过ssh连接到我的节点

我试图让OpsCenter通过“修复”安装代理。在“节点SSH凭据”对话框中提供私钥…但我得到“无法SSH到…”错误输出:权限被拒绝(公钥)

我很困惑我怎么能从命令行ssh,但OpsCenter不能

然后,我尝试手动安装代理(再次使用apt get;和service opscenterd agent start),但我在/var/log/datasax agent/startup.log中看到了这一点:

 INFO [main] 2013-12-13 13:25:11,035 Loading conf files: /var/lib/datastax-agent/conf/address.yaml
Exception in thread "main" java.lang.ClassCastException: java.lang.Character cannot be cast to java.util.Map$Entry
        at opsagent.conf$load_conf_file$fn__1185$fn__1186.invoke(conf.clj:197)
        at clojure.core$map$fn__4207.invoke(core.clj:2487)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:60)
        at clojure.lang.RT.seq(RT.java:484)
        at clojure.core$seq.invoke(core.clj:133)
        at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
        at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
        at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
        at clojure.core$reduce.invoke(core.clj:6177)
        at clojure.core$into.invoke(core.clj:6229)
        at opsagent.conf$load_conf_file.invoke(conf.clj:195)
        at clojure.core$map$fn__4207.invoke(core.clj:2487)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:60)
        at clojure.lang.RT.seq(RT.java:484)
        at clojure.core$seq.invoke(core.clj:133)
        at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
        at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
        at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
        at clojure.core$reduce.invoke(core.clj:6177)
        at clojure.core$into.invoke(core.clj:6229)
        at opsagent.conf$load_conf.invoke(conf.clj:209)
        at opsagent.opsagent$_main.doInvoke(opsagent.clj:228)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at opsagent.opsagent.main(Unknown Source)
(我的address.yaml文件是: stomp_接口=1.2.3.4//当然有不同的编号

我已经使用C*和Opsceneter的早期版本很多年了,但我现在一直在努力使这个版本能够正常运行。

您使用的是“=”yaml语法需要a:”。因此,您的stomp_接口行应该是什么样子的:

stomp_interface: 1.2.3.4

您需要重新启动datastax代理才能生效。

我已经在~/.ssh/id_dsa中输入了我的私有ssh密钥(我以用户“ubuntu”的身份在EC2上运行)

一时兴起,我搜索了其他.ssh目录,找到了/root/.ssh

我将id_dsa文件复制到该目录,这次OpsCenter能够与集群中的所有节点通信并安装代理


虽然这“解决”了这个问题,但它有点不令人满意,因为OpsCenter说明中没有提到这一点,而且我不确定我应该如何知道如何查找这个other.ssh目录。另一方面,它正在工作:-).

这一更改没有任何区别。我仍然得到ClassCastException。我看到其他人将该错误归因于复制代理jar文件,但这里也不是这样。值得一提的是,这一步不应该是必要的。OpsCenter应该能够使用从命令行登录到节点时使用的相同密钥和用户。我gree it“不应该"可能是需要的,但确实是。我不知道为什么一个解决问题的答案被否决了,尤其是没有提供替代方案。实际上,在你的帖子中有两个问题。你发布的堆栈跟踪肯定是由yaml格式错误引起的。我仍然不确定是什么原因导致了你的ssh错误。听起来你的解决方案似乎是错误的s使您的私钥成为根用户(opscenter作为其运行)的默认私钥。您是否将私钥的实际内容粘贴到opscenter中?包括开始和结束注释?嗯……在修复yaml格式错误后,我得到了完全相同的堆栈跟踪,因此这不是错误。鉴于事实(我不知道)OpsCenter以root用户身份运行,然后将id_dsa放入root用户的.ssh文件中是一个很好的解决方案,事实上,根据我的经验,它通常是处理ssh连接的方式。我唯一的猜测是,存在其他yaml格式错误,或者您正在编辑tarball中包含的conf,用于手动安装,而不是/var/lib/datastax-可能是agent/conf/address.yaml。在那里添加密钥并不是最好的解决办法,原因是OpsCenter在其他安装类型(rpm、tarball)中不会以root用户身份运行,虽然它在这种情况下可以工作,但不能保证将来可以工作。