背景:
我正在尝试运行 Jepsen (https://github.com/jepsen-io/jepsen https://github.com/jepsen-io/jepsen)在 Ubuntu 16.04 上。我创建了 6 个虚拟机(在我的 Windows 10 电脑上),并将主机名替换为 n1、n2、...n6。所有虚拟机的用户名和密码均相同。
现在,我可以从任何虚拟机直接 ssh 到任何其他虚拟机。 (例如,从 n6 开始,我可以执行此命令“ssh n1”并且它可以正常工作)。我正在尝试从节点 6 (主机名 n6 )运行节点 jepsen 工具,以便它可以在节点 n1、n2、n3、n4 和 n5 中创建数据库。
到目前为止,我还没有对 jepsen 代码进行任何更改。我已经使用“lein install”命令编译了它,现在尝试运行它。
Problem:
为了简单地运行测试,我按照 jepsen 网页中提供的说明进行操作(“cd aerospike”;“lein test”),但它给了我以下错误:
user@Ubuntu6:~/Desktop/jepsen_cassandra/aerospike$ lein test
lein test aerospike.core-test
jepsen.generator$concat$reify__7285@577dac16>
lein test :only aerospike.core-test/counter
ERROR in (counter) (Session.java:781)
Uncaught exception, not in assertion.
expected: nil
actual: com.jcraft.jsch.JSchException: reject HostKey: n1 at com.jcraft.jsch.Session.checkHost (Session.java:781)
com.jcraft.jsch.Session.connect (Session.java:342)
com.jcraft.jsch.Session.connect (Session.java:183)
clj_ssh.ssh$eval6796$fn__6803.invoke (ssh.clj:118)
clj_ssh.ssh.protocols$eval6722$fn__6745$G__6713__6754.invoke (protocols.clj:4)
clj_ssh.ssh$connect.invoke (ssh.clj:401)
jepsen.control$session.invoke (control.clj:197)
clojure.lang.AFn.applyToHelper (AFn.java:154)
clojure.lang.AFn.applyTo (AFn.java:144)
clojure.core$apply.invoke (core.clj:624)
clojure.core$with_bindings_STAR_.doInvoke (core.clj:1862)
clojure.lang.RestFn.applyTo (RestFn.java:142)
clojure.core$apply.invoke (core.clj:628)
clojure.core$bound_fn_STAR_$fn__4140.doInvoke (core.clj:1884)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invoke (core.clj:624)
jepsen.core$fcatch$wrapper__8355.doInvoke (core.clj:55)
clojure.lang.RestFn.invoke (RestFn.java:408)
clojure.core$pmap$fn__6328$fn__6329.invoke (core.clj:6466)
clojure.core$binding_conveyor_fn$fn__4145.invoke (core.clj:1910)
clojure.lang.AFn.call (AFn.java:18)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
java.lang.Thread.run (Thread.java:748)
jepsen.generator$concat$reify__7285@254210b1>
lein test :only aerospike.core-test/cas-register
ERROR in (cas-register) (Session.java:781)
Uncaught exception, not in assertion.
expected: nil
actual: com.jcraft.jsch.JSchException: reject HostKey: n1
at com.jcraft.jsch.Session.checkHost (Session.java:781)
com.jcraft.jsch.Session.connect (Session.java:342)
com.jcraft.jsch.Session.connect (Session.java:183)
clj_ssh.ssh$eval6796$fn__6803.invoke (ssh.clj:118)
clj_ssh.ssh.protocols$eval6722$fn__6745$G__6713__6754.invoke (protocols.clj:4)
clj_ssh.ssh$connect.invoke (ssh.clj:401)
jepsen.control$session.invoke (control.clj:197)
clojure.lang.AFn.applyToHelper (AFn.java:154)
clojure.lang.AFn.applyTo (AFn.java:144)
clojure.core$apply.invoke (core.clj:624)
clojure.core$with_bindings_STAR_.doInvoke (core.clj:1862)
clojure.lang.RestFn.applyTo (RestFn.java:142)
clojure.core$apply.invoke (core.clj:628)
clojure.core$bound_fn_STAR_$fn__4140.doInvoke (core.clj:1884)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invoke (core.clj:624)
jepsen.core$fcatch$wrapper__8355.doInvoke (core.clj:55)
clojure.lang.RestFn.invoke (RestFn.java:408)
clojure.core$pmap$fn__6328$fn__6329.invoke (core.clj:6466)
clojure.core$binding_conveyor_fn$fn__4145.invoke (core.clj:1910)
clojure.lang.AFn.call (AFn.java:18)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
java.lang.Thread.run (Thread.java:748)
Ran 2 tests containing 2 assertions.
0 failures, 2 errors.
Tests failed.
首先,我尝试按原样运行代码。但后来我在(的第21行和第22行添加了5个虚拟机的用户名和密码(ssh所需的)https://github.com/jepsen-io/jepsen/blob/master/jepsen/src/jepsen/control.clj https://github.com/jepsen-io/jepsen/blob/master/jepsen/src/jepsen/control.clj)。但这并没有解决问题。
我将非常感谢任何解决此问题的解决方案/指南。
这条线
actual: com.jcraft.jsch.JSchException: reject HostKey: n1 at com.jcraft.jsch.Session.checkHost
表示启动 ssh 连接的系统不愿意信任其所连接的计算机的身份。因此,这不是密码/密钥不允许您进入的问题,而是相反,启动连接的系统不确定它所连接的系统的身份。
最常见的原因是您过去使用相同的 IP 或主机名连接到系统,但该 IP 或主机名已被该系统替换。 SSH 保证,如果不同的计算机响应相同的名称,它将触发警报并且不会连接,而不是面临中间人攻击的风险。当系统确实被更换时,这会导致误报。
尝试从该系统通过 ssh 连接到目标主机并确保其正常工作。
如果没有尝试删除该系统的IP~/.ssh/known_hosts
如果它在那里的话。
还要考虑一下你的~/.ssh/config
文件会影响该主机,例如可能要求它具有特定的主机密钥
因为它似乎不是主机密钥冲突,所以接下来要检查的是主机正在使用哪种主机密钥。 Jsch 是它自己的 ssh 实现,它支持与 openSSH 不同的密钥集。您可以通过运行来确定系统的主机密钥类型
ssh -vvv hostname
...
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
然后谷歌搜索 jsch 和主机密钥算法,看看是否有任何未解决的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)